下述程序中的fib(n)函数使用递归方式计算斐波那契序列的第n项的值,并统计在fib(n)的计算过程中,fib(3)被调用执行的次数。
- 请将下述程序补充完整,使用可以正常运行。
- 思考如何避兔子序列问题的重复计算(提示:备忘录方法)。
#include <stdio.h> int iCounterFib3 = 0; //用于统计fib(3)被调用的次数 long long fib(int n){ if (n==3) iCounterFib3++; if (n==1 || n==2) return 1; else return fid(n-1)+fid(n-2) } 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; }