问题: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呢???

解决方案 »

  1.   

    斐波那契static int Fibonacci(int index)
    {
      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.   

    . 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{
        int k =  Process1(i - 1) + Process1(i - 2);
        Console.WriteLine(k);
        return k;
        }14. }
    结果输出来,自己看吧。
      

  3.   

    Process1(8 - 1) + Process1(8 - 2);由于括号里的数大于2,继续递归,变成
    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.