大家好,又见面了,我是你们的朋友全栈君。
c#题目如下:
要求输出:1,2,3,5,8,13,21,34,55,89
写法一:
public class MyClass
{
public static void Main()
{
int[] cSum = new int[10];
string sSum=””;
for (int i = 0; i < cSum.Length; i++)
{
if(i==0)
{
cSum[i]=1;
sSum=””+cSum[i];
}
else if(i==1)
{
cSum[i]=cSum[i-1]+cSum[i-1];
sSum=sSum+’,’+cSum[i];
}
else
{
cSum[i]=cSum[i-1]+cSum[i-2];
sSum=sSum+’,’+cSum[i];
}
}
//输出结果1,2,3,5,8,13,21,34,55,89,普通写法
Console.WriteLine(sSum);
Console.ReadKey();
}
}
Snippet Compliler调试通过
这样写虽然能实现,但是感觉不大好,重构,用递归写法
写法二:
public class MyClass
{
public static void Main()
{
int[] cSum= new int[10];
string sSum=””;
for(int j=0;j<cSum.Length;j++)
{
cSum[j]= process(j);
if(sSum!=””)
{
sSum=sSum+’,’;
}
sSum+=cSum[j];
}
//输出结果1,2,3,5,8,13,21,34,55,89,递归写法
Console.WriteLine(sSum);
Console.ReadKey();
}
public static int process(int i)
{
int s;
if(i==0||i==1)
{
s=i+1;
}
else
{
s=process(i-1)+process(i-2);
}
return s;
}
}
通过递归算法重构了写法一
下面留个题目,要求输出:1,1,2,3,5,8,13,21,34,55
写法三:
public class MyClass
{
public static void Main()
{
int[] cSum = new int[10];
string sSum=””;
for (int i = 0; i < cSum.Length; i++)
{
if(i==0||i==1)
{
cSum[i]=1+cSum[i];
if(sSum!=””)
{
sSum+=”,”;
}
sSum+=cSum[i];
}
else
{
cSum[i]=cSum[i-1]+cSum[i-2];
sSum=sSum+’,’+cSum[i];
}
}
//输出结果1,1,2,3,5,8,13,21,34,55
Console.WriteLine(sSum);
Console.ReadKey();
}
}
请把写法三改成递归写法?呵呵,可以试一下!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155651.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...