1. 程式人生 > >1113: 遞歸調用的次數統計(函數專題)

1113: 遞歸調用的次數統計(函數專題)

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: 遞歸調用的次數統計(函數專題)