1. 程式人生 > >ZZULIOJ.1113: 遞迴呼叫的次數統計(函式專題)

ZZULIOJ.1113: 遞迴呼叫的次數統計(函式專題)

1113: 遞迴呼叫的次數統計(函式專題)

題目描述

如下程式的功能是計算 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

樣例輸出
6765
遞迴呼叫了13529次

#include<stdio.h>
int fib(int k);
int main(void)
{
    int n;
    scanf("%d",&n);
    printf("%d\n",fib(n));
    printf("遞迴呼叫了%d次\n",2*fib(n)-1);
    return 0;
}
int fib(int k)
{
    if(k==1||k==2)
    return 1;
    else
    return fib(k-1)+fib(k-2);
}