fib(n)がFOR EACH nと呼ばれる回数を計算したいと思います。fib(n)が呼び出された回数を計算する
:私は結果が数[0]以外のフィボナッチ数に似ている結果を、取得するために[]カウント配列を印刷しようとしている
#include <stdio.h> #define N 10 int count[N + 1]; // count[n] keeps track of the number of times each fib(n) is called int fib(int n) { count[n]++; if(n <= 1) return n; else return fib(n - 1) + fib(n - 2); } int main() { for(int i = 0; i <= N; i++) { count[i] = 0; // initialize count to 0 } fib(N); // print values of count[] for(int i = 0; i <= N; i++) { printf("count[%d] = %d", i, count[i]); } }
:私は以下のようにコードを書かれています012カウント= [4] = 5カウント[5] = 8カウント[7] = 3カウント[0] = 34カウント[1] = 55カウント[2] = 34カウント[3] = 21カウント[4] = 13 カウント[5] [8] = 2カウント[9] = 1 カウント[10] = 1
ですがこの結果を数学的に示す方法は、おそらく再帰式ですか?また、なぜ[0]をカウントしない、あるいはfib(0)をフィボナッチシーケンスを継続しないのでしょうか?ありがとうございます。
'fib(1)'は結果を得るために 'fib(0)'を呼び出さず、直接 '1'を返します。 'fib(2)'だけがそれを呼び出します。したがって、 'fib(0)'はそれほど頻繁に呼び出されません。 また、私はあなたの最初の質問を理解していません – KABoissonneault