実装しようとしているアルゴリズムがあります。最悪の場合の実行時間を表す関数を決定するように依頼されました。入力として、それはある長さの配列を取ります(それをnと呼びましょう)。次に、それが行うことは次のとおりです。
if (n==0){ return 0;}
else if(n==1){return A[0];}
else{
return f(n-1)+f(n-2)
}
実装の詳細が少しまばらである場合は申し訳ありませんが、ある意味では、fibbanociシーケンスのようなものにかなり似ています。このアルゴリズムの最悪の場合の実行時間はt(n)= 2 ^ nだと思います。これは、nが大きい場合、2つの別々の計算に分解され、さらに2つに分割されるためです。これを正式に正当化する方法がわかりません