为了账号安全,请及时绑定邮箱和手机立即绑定

这是一到面试题,相信大家都知道,但我不知道这到底是如何进行的. 忘路过的高手们解释一下。1

这是一到面试题,相信大家都知道,但我不知道这到底是如何进行的. 忘路过的高手们解释一下。1

C++
繁星淼淼 2023-01-02 14:10:57
一列数的规则如下: 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个数的和

}

查看完整回答
反对 回复 2023-01-06
?
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)

查看完整回答
反对 回复 2023-01-06
  • 2 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信