1113: 遞歸調用的次數統計(函數專題)
阿新 • • 發佈:2018-12-03
urn ++ 同時 spa stdio.h sca 計算 can 可能
題目描述
如下程序的功能是計算 Fibonacci數列的第n項。函數fib()是一個遞歸函數。請你改寫該程序,計算第n項的同時,統計調用了多少次函數fib(包括main()對fib()的調用)。
#include<stdio.h>
int fib(int k);
int main(void )
{
int n;
scanf("%d", &n);
printf("%d\n", fib(n));
return 0;
}
int fib(int k)
{
if(k == 1 || k == 2)
return 1;
else
return fib(k-1) + fib(k-2);
}
輸入
輸入一個正整數n。
輸出
輸入包含兩行,第一行是一個整數,表示第n項的值;第二行輸入遞歸調用了多少次,具體格式見輸出樣例。
樣例輸入
20
#include<stdio.h> int ans=0; int fib(int k); int main(void ) { int n; scanf("%d", &n); printf("%d\n", fib(n)); printf("遞歸調用了%d次",ans); return 0; } //其實是挺簡單 的,可能會想的很複雜。 int fib(int k) { ans++; if(k == 1 || k == 2) return 1; else return fib(k-1) + fib(k-2); }
樣例輸出
6765
遞歸調用了13529次
1113: 遞歸調用的次數統計(函數專題)