#include<stdio.h>
int fib(int k);
int cnt = 0;//全局变量
int main(void )
{
int n;
scanf("%d", &n);
printf("%d\n", fib(n));
printf("递归调用了%d次",cnt);
return 0;
}
int fib(int k,int *a)
{
cnt++;
if(k == 1 || k == 2)
return 1;
else
return fib(k-1) + fib(k-2);
}
//不用全局变量
#include<stdio.h>
int fib(int k,int *);
//int cnt = 0;
int main(void )
{
int n,cnt=0;
scanf("%d", &n);
printf("%d\n", fib(n,&cnt));//这里改一下
printf("递归调用了%d次",cnt);
return 0;
}
int fib(int k,int *a)
{
// cnt++;
(*a)++;
if(k == 1 || k == 2)
return 1;
else
return fib(k-1,a) + fib(k-2,a);
}
用一个全局变量就可以了