程序填空题:斐波那契递归函数 - C/C++ 函数与抽象
下述程序中的fib(n)函数使用递归方式计算斐波那契序列的第n项的值,并统计在fib(n)的计算过程中,fib(3)被调用执行的次数。
![image.png](~/5044b99d-60d0-4124-801e-48791ce6d116.png)
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次。
### 感觉不会? 那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)
![image.png](~/6e79c9e3-cb7f-486d-ab78-36b5a8f655c0.png)
答案:
第1空:iCounterFib3++;
第2空:return 1;
第3空:return fib(n-1)+fib(n-2);
![image.png](~/5044b99d-60d0-4124-801e-48791ce6d116.png)
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次。
### 感觉不会? 那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)
![image.png](~/6e79c9e3-cb7f-486d-ab78-36b5a8f655c0.png)
答案:
第1空:iCounterFib3++;
第2空:return 1;
第3空:return fib(n-1)+fib(n-2);