计算每次调用fib(n)的次数n

时间:2016-12-14 18:20:41

标签: c++ c recursion fibonacci

我想计算每次调用fib(n)的次数。我编写了如下代码:

        Random random = new Random();
        int[,] array = new int[10, 10];

        for (int i = 0; i < 10; i++)
        {

            for (int j = 0; j < 10; j++)
            {
                array[i, j] = random.Next(10);
                Console.Write(array[i,j]+"\t");
            }

            Console.WriteLine("\n");

我已经尝试打印数组count []来获得结果,其中结果类似于斐波那契数字,除了count [0]:

  

count [0] = 34 count [1] = 55 count [2] = 34 count [3] = 21 count [4] = 13   count [5] = 8 count [6] = 5 count [7] = 3 count [8] = 2 count [9] = 1   count [10] = 1

有没有办法以数学方式显示此结果,可能是一个递归公式?另外,为什么不计算[0],或者更确切地说是fib(0),不会继续斐波那契序列?谢谢。

2 个答案:

答案 0 :(得分:5)

因为每个count[1]都会调用count[2] + count[3],但count[0]只会调用count[2] ... count[1]不会{39}因为它是一个终点而有所贡献。

至于数学公式:

if n == 0: fib(N - 1)
else: fib(N-(n-1))

答案 1 :(得分:1)

至于计算

call(n)=call(n-1)+call(n-2)+1
  call(1)=1
  call(0)=1

希望这能让事情变得清晰。

n  | calls
---+--------
0  |   1
1  |   1
2  |   3 
3  |   5  f(3)= f(2)[= f(1)+ f(0)]+ f(1)
5  |   9  
.
fib(n)    2*fib(n)-1