如何计算fibonacci函数的递归调用次数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何计算fibonacci函数的递归调用次数相关的知识,希望对你有一定的参考价值。

按照递归方式,完成Fibonacci数列的计算。Fibonacci数列的下一项是当前项和前一项的和。即,
f(n) = f(n-1) + f(n-2)。初始值f(0)=0, f(1) = 1。
1. 完成递归函数:
int fibo(int n)


2. 计算fibo(20)的过程中,fibo函数被调用多少次?请写出完整程序(提示,使用全局变量进行计数)
3. 如果不使用全局变量,还可以采用什么方式对fibo函数的被调用次数进行计数?也请写出完整程序。

参考技术A #include <stdio.h>
long Fib(int n);
int count;
int main()

int n, i, x;
printf("Input n:");
scanf("%d", &n);
for (i = 1 ; i <= n; i++)

count = 0;
x = Fib(i);
printf("Fib(%d)=%d, count=%d\n", i, x, count);

return 0;

long Fib(int n)

count++;
if (n == 0) return 0;
else if (n == 1) return 1;
else return (Fib(n - 1) + Fib(n - 2));
参考技术B int count=0;//全局变量
long fibonacci(int n)

count++;//计数
if(n<=2)
return 1;
return fibonacci(n-1)+fibonacci(n-2);
参考技术C 不是很难啊!

csharp 如何使用递归计算Fibonacci序列的示例。

static void Main()
{
  Console.Write("Enter the number of terms for the Fibonacci sequence: ");
  int num = int.Parse(Console.ReadLine());

  Console.Write("The Fibonacci sequence is: ");

  for (int i = 0; i < num; i++)
  {
    if (i == (num - 1))
    {
      Console.Write(Fibonacci(i));
    }
    else
    {
      Console.Write(Fibonacci(i) + ", ");
    }
  }
  Console.WriteLine();
}

static long Fibonacci(int num)
{
  if (num == 0)
  {
    return 0;
  }
  if (num == 1)
  {
    return 1;
  }
  else 
  {
    return Fibonacci(num - 1) + Fibonacci(num - 2);
  }
}

//  Enter the number of terms for the Fibonacci sequence: 8
//  The Fibonacci sequence is: 0, 1, 1, 2, 3, 5, 8, 13

以上是关于如何计算fibonacci函数的递归调用次数的主要内容,如果未能解决你的问题,请参考以下文章

1113 递归调用的次数统计

C语言:采用递归调用函数方法计算Fibonacci数列的前20项

C语言编程:用函数递归法求Fibonacci数列的前n项·

Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列

递归函数与fibonacci

用C++求fibonacci数