两种递归方法的比较
有道题目:
一列数的规则如下: 1、1、2、3、5、8、13、21、34......
求第30位数是多少, 用递归算法实现。
两种实现方式,一种是从后往前加,一种是从前往后加
Foo1方法看起来简洁,但执行次数多,第30要调用1664079次
Foo2参数多,但只要调用29次
public class MainClass { public static void Main() { Console.WriteLine(Foo1(30)); Console.WriteLine(Foo2(1,1,30)); } public static int Foo1(int i) { if (i <= 0) { return 0; } else if (i > 0 && i <= 2) { return 1; } else { return Foo1(i - 1) + Foo1(i - 2); } } public static int Foo2(int a, int b, int i) { if (i > 2) { return Foo2(b, a + b, --i); } else { return b; } } }