问题:1,1,2,3,5,8... 求第8个数是多少?1. static void Main(string[] args)
2. {
3. Console.WriteLine(Process1(8));
4. Console.Read();
5. }
6.
7. public static Int32 Process1(int i)
8. {
10. if (i == 1 || i == 2)
11. return 1;
12. else
13. return Process1(i - 1) + Process1(i - 2);
14. }我就是不明白第13行的运行原理,怎么就能求出结果???? 断点也看不出来,郁闷死我了我的理解是return Process1(8 - 1) + Process1(8 - 2)应该是13啊,怎么会是21呢???
2. {
3. Console.WriteLine(Process1(8));
4. Console.Read();
5. }
6.
7. public static Int32 Process1(int i)
8. {
10. if (i == 1 || i == 2)
11. return 1;
12. else
13. return Process1(i - 1) + Process1(i - 2);
14. }我就是不明白第13行的运行原理,怎么就能求出结果???? 断点也看不出来,郁闷死我了我的理解是return Process1(8 - 1) + Process1(8 - 2)应该是13啊,怎么会是21呢???
{
return index <= 2 ? 1 : Fibonacci(index - 1) + Fibonacci(index - 2);
}Func<int, int> Fibonacci = null;
Fibonacci = i => i <= 2 ? 1 : Fibonacci(i - 1) + Fibonacci(i - 2);
Console.WriteLine(Fibonacci(30));
Console.ReadKey();
2. {
3. Console.WriteLine(Process1(8));
4. Console.Read();
5. }
6.
7. public static Int32 Process1(int i)
8. {
10. if (i == 1 || i == 2)
11. return 1;
12. else{
int k = Process1(i - 1) + Process1(i - 2);
Console.WriteLine(k);
return k;
}14. }
结果输出来,自己看吧。
Process1(7- 1) + Process1(7 - 2)+Process1(6 - 1)+Process1(6 - 2)继续递归
有Process1(6- 1) + Process1(6 - 2)+Process1(5 - 1)+Process1(5 - 2)+Process1(5- 1) + Process1(5 - 2)+Process1(4 - 1)+Process1(4 - 2)
.....
括号里的值先为2和1的返回1.
最后有
Process1(3- 1)+Process1( 3- 2)+ 19
所以返回21.