一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i <= 0) return 0; else if(i > 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } }
2 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30)); //调用Foo函数,参数是30
}
public static int Foo(int i)
{ //Foo函数的函数体
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)//i为1和2的时候,返回1
return 1;
else return Foo(i -1) + Foo(i - 2);
//i从3开始,返回值为前2个值相加
//其实就是斐波那契数列
//1 1 2 3 5 8 13 21 ......每个数等于前2个数的和
}
}
holdtom
TA贡献1805条经验 获得超10个赞
这是用C#写的
Console.WriteLine(Foo(30));
意为输出第30个数
if (i <= 0)
return 0; 当i<=0的时候 就返回0 就是说Foo(0)=0
else if(i > 0 && i <= 2)
return 1; 当i > 0 && i <= 2的时候 就返回1 就是说Foo(1)=1,Foo(2)=1
else return Foo(i -1) + Foo(i - 2);
这里 我就举个例子 当i=3 ,Foo(3)=Foo(2)+Foo(1)=2 知道Foo(30)
- 2 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消