首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

一个算法题解决方案

2013-02-24 
一个算法题一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。答:public c

一个算法题
一列数的规则如下: 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); 
                  } 
                  } 

不是很明白
有没有更简洁的写法
[解决办法]
杨辉三角吧,你首先得知道上面的数列是什么规律,然后就好写算法了
上面的规律是从第3个开始,每个数都等于前两个数之和,所以递归时,i<=2时返回1,其他都是等于前两个数之和,即Foo(i-1)+Foo(i-2)

热点排行