程序填空题:斐波那契递归函数 - C/C++ 函数与抽象
下述程序中的fib(n)函数使用递归方式计算斐波那契序列的第n项的值,并统计在fib(n)的计算过程中,fib(3)被调用执行的次数。
1. 请将下述程序补充完整,使用可以正常运行。
2. 思考如何避兔子序列问题的重复计算(提示:备忘录方法)。
c++
#include <stdio.h>
int iCounterFib3 = 0; //用于统计fib(3)被调用的次数
long long fib(int n){
if (n==3)
if (n==1 || n==2)
else
}
int main()
{
int n = 0;
scanf("%d",&n);
long long r = fib(n);
printf("fib(%d) = %lld.\n",n,r);
printf("fib(3) been called for %d times.",iCounterFib3);
return 0;
}
说明:fib(12)应等于144,在递归计算fib(12)的过程中,fib(3)被调用执行55次。
答案:
第1空:iCounterFib3++;
第2空:return 1;
第3空:return fib(n-1)+fib(n-2);
1. 请将下述程序补充完整,使用可以正常运行。
2. 思考如何避兔子序列问题的重复计算(提示:备忘录方法)。
c++
#include <stdio.h>
int iCounterFib3 = 0; //用于统计fib(3)被调用的次数
long long fib(int n){
if (n==3)
if (n==1 || n==2)
else
}
int main()
{
int n = 0;
scanf("%d",&n);
long long r = fib(n);
printf("fib(%d) = %lld.\n",n,r);
printf("fib(3) been called for %d times.",iCounterFib3);
return 0;
}
说明:fib(12)应等于144,在递归计算fib(12)的过程中,fib(3)被调用执行55次。
答案:
第1空:iCounterFib3++;
第2空:return 1;
第3空:return fib(n-1)+fib(n-2);