私は、再帰的なフィボナッチアルゴリズムについての分析を行う作業があります。アルゴリズムは、O(2^n)の複雑さを有する。私はnが深さであり、別の記事でnが2^nの入力サイズであると読んだ。だから真実は何ですか?次に、フィナンシャル・ナンバーを得るために歩数を数える方法(再帰呼び出しと呼ぶこともできます)。私はこのようなコードを持っています:再帰的なフィボナッチの複雑さとステップ数
#include <bits/stdc++.h>
using namespace std;
long fibonacci(long);
long jl=0;
double rt;
int main(){
long result, number;
scanf("%ld", &number);
clock_t mulai = clock();
result = fibonacci(number);
rt = ((double) (clock() - mulai))/CLOCKS_PER_SEC;
printf("Fibonacci (%ld) = %ld\n", number, result);
printf("Jumlah langkah = %ld\n", jl);
printf("Running Time = %.10f\n", rt);
return 0;
}
long fibonacci(long n){
jl++;
if(n==0 || n==1)
return n;
else
return fibonacci(n-1) + fibonacci(n-2);
}
jlは、このコードのステップ数です(再帰呼び出し)。
F(1)、JL = 1
F(2)、JL = 3
F(3)、JL = 5
F(5):これらは私の計算例であります、jl = 15
だから、それは真か偽ですか? falseの場合、正しいコードは何ですか?ありがとうございました。
あなたの質問は本当に不明です。あなたは 'n 'が何であるかを理解しようとしていますか?コードの複雑さを分析するのに問題がありますか?コードが実行される回数を計算しようとしていますか?質問をより明確にすることを検討してください。 – nitzanms
nが何であるか、およびステップ/再帰呼び出しの数を計算する方法を理解しようとします – RiefSapthana
複雑さの分析では、 'n'は常に入力のサイズです。再帰深度は複雑さを決定するために 'n'から計算するものです。 – Barmar