まず、フィボナッチ数列は何ですか?
また、黄金列として知られているフィボナッチ数(フィボナッチ数列)、ウサギ飼育と、それはまたとして知られている導入例として、数学者レオナルド・フィボナッチ(Leonardodaフィボナッチ)「ウサギシリーズ」を参照なぜならそのようなシリーズである:1,1,2,3,5,8,13,21,34、......数学的に、フィボナッチ数を定義するには、次の再帰的な方法に記載されている:F(1)= 1、F(2)= 1、F(N)= F(N-1)+ F(N-2)(N> = 3、n∈N*)
定義によると、第3段落の最初からこのシリーズは、それぞれの最初の二つの和に等しいです。
参考フィボナッチ列_ Baiduの百科事典
第二に、フィボナッチ数列の再帰を与えられました。
DEF FIB(N):
リターン1とn <= 2またはFIB(N - 1)+ FIB(N - 2)
プリント( '\ nは答えである%D' %(FIB(10)))
第三に、再帰のFib(n)は、スクラッチやPython、およびテストは、お使いのコンピュータ上でそれをFIB(10)、FIB(100)1分、FIB(1000)、FIB(10000)を計算することができますか?
1.fib(10)
0.057秒を使用する場合
2.fib(100)
無駄にまだ3分以上待った後、私は手動で実行を停止し、示されているように(理由はファンの音の大きすぎる、ああ実行しないで!)
3.fib(1000)とFIB(10000)
私は試していないが、ビューの状況FIB(100)ポイントの下で、実行しないでください。
第四に、反撃の記事!
下記のウェブサイトを参照した後:
pythonのフィボナッチ再帰式アルゴリズムと非再帰的アルゴリズムを取得
この時点で、私はすぐに非再帰的アルゴリズムでサイトが問題のFIB(n)を解決するために与えられました
そして、その理由を理解し、その理由は次のとおりです。
- 1.再帰的計算の複雑さがある:O(2 ^ N)----あまりに時間がかかり
- 2.非再帰的アルゴリズムは、時間と空間の複雑されている:O(N)
非再帰コード算出FIB(100)、FIB(1000)及びFIB(10000)を実行