题目描述:如下程序的功能是计算 Fibonacci数列的第n项。函数fib()是一个递归函数。请你改写该程序,计算第n项的同时,统计调用了多少次函数fib(包括main()对fib()的调用)。
输入:输入一个正整数n。
输出:输出包含两行,第一行是一个整数,表示第n项的值;第二行输出递归调用了多少次,具体格式见输出样例。
样例输入
20
样例输出
6765
递归调用了13529次
思路:关键在设置一个全局变量,每次调用fib()就自加
代码:
#include<stdio.h>
int i=0;
int fib(int);
int main(){
int n,num;
scanf("%d",&n);
num=fib(n);
printf("%d\n递归调用了%d次",num,i);
}
int fib(int n){
i++;
if(n==1||n==2) return 1;
else return fib(n-1)+fib(n-2);
}
该博客介绍了如何修改C语言的递归函数以计算Fibonacci数列的第n项,并同时统计递归调用的次数。通过设置全局变量跟踪调用次数,实现了在输出数列项的同时显示调用次数的功能。
415

被折叠的 条评论
为什么被折叠?



