Pythonのフィボナッチ説明する行アプリケーション

起源

また、列/ラビットシリーズの黄金数として知られているフィボナッチ列、;フィボナッチが発見されたウサギの繁殖問題の起源は(記事のリンク端の特定の分析を参照)、URL少し長いが、内容は非常にハッハッハ、詳述されています。

フィボナッチ数は、列1のような数、1、2、3、5、8、13、21、34、55、89、144、233、...という列の最も重要な特徴を指す:第から出発します、それぞれの値は、最初の2つの和に等しいです。

コードの実装

次のように簡単なコードの実装は次のとおりです。

#函数定义
def feibo(n):
    a,b = 0,1
    # while循环的终止条件为 b>= n
    while b < n:
        # end = ' '表示不换行,输出结果以一个空格隔开,此处可自定义
        print(b, end=' ')
        a,b = b, a + b
    # 下行语句表示:等while循环结束后换行
    print()
    
#函数调用
feibo(10)

次のように実行結果は以下のとおりです。

1 1 2 3 5 8 

そのノートコードの意味は、n = 10、上記nで表され、10未満のフィボナッチ範囲は、フィボナッチシーケンス番号値がないフィボナッチ数は10の値であることを示しています。

アプリケーション:大きな矩形をカバーする小さな四角形

アプリケーション1:大きな矩形をカバーする2×1横方向または垂直方向の小さな長方形であってもよいです。nは2×1の小さな長方形によって大きな矩形2と重複することなく覆われているだろう×N、塗布法の種類の総数は?使用してください再帰的を達成するために?

1アプリケーションのアイデア分析

1 2
3 4

12は、ここで使用されている(34)は、小さな長方形の小矩形の、13(24)1(長さ)×2(幅)×1(幅)2(長さ)を表します。

N = 2で、テーブル、すなわち、二つの小さな四角形の2×1は、2×2のカバレッジと重複することなく大きな矩形です。

N =列の数は、いくつかのカバーのR =結果を配置しています。

1 2 3 4 5 6
7 8 9 10 11 12

;分析は、n = 0 ,, R&LT = 0、得ることができる
N- =時間1は、R = 1;
N- =時間2は、R = 2;
N- =時刻3、R = 3;
シンプル分析2列カバレッジ結果の2種類があり、(2 17/28)および(78分の12本の2本のライン)
3がある場合、カバレッジ結果の三種類があり;(13/28/39 3)及び(2列17/23 / 89)及び(二列1 12/78/39)

再分析、n = 4の場合、二つの状況:
(1)時間とき、すなわち直立カラムユニット、ここで、n = 3、すなわち3 = R&LTの3つの結果;
(2)水平に配置されたとき、すなわち時間の単位で、残り2つのn = 2の結果、即ち、R = 2
n = 4の場合したがって、ケース3 + 2 = 5種で覆われていてもよいです。

:式次のようにというように、要約することができるF(N)= F(N - 1)+ F(N-2-)

1アプリケーション・コードの実装

したがって、次のように実装が質問を再帰的にするコード:

def rectConvert1(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    elif n == 2:
        return 2
    else:
        return rectConvert1(n-1) + rectConvert1(n-2)
print(rectConvert1(6))

次のように実行結果は以下のとおりです。

13

なお:6つのセルのリストである、上述した符号列の数n(nはアイテムの値ということも理解されたい)、カバレッジの13種類(F(6)= F(5)+ F( 4)= F(4)+ F(3)+ F(3)+ F(2)= F(3)+ F(2)+ F(3)+ F(3)+ F(2)= 3F( 3)+ 2F(2)= 9 + 4 = 13)。

アプリケーション2:非再帰的な方法で最初の質問を実装

2アプリケーションのアイデアを分析

非再帰的に実施される場合、他にだけコードブロックを修正し、リストに格納されている列の値フィボナッチ数は、n番目の項目の値を取ります。

2アプリケーションコードを達成するために

def rectConvert2(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    elif n == 2:
        return 2
    else:
        res = [0,1,2]
        while len(res) <= n:
            # 计算当前列表的倒数第一个值和第二个值的和
            res.append(res[-1]+res[-2])
        return res[n]

print(rectConvert2(6))

実行結果コードを以下に示します。

13

一般的な問題はなく:出産後の最初の3ヶ月からウサギのペアが毎月ウサギのペアを1つ生まれているウサギが死んでいない場合、月は、ウサギの一組を出産した後、バニーは、第三の月に育ちます、月額ウサギの合計数はどのくらいに聞いて?(具体的な答えが遅れて明らかにしました)

注:ウサギの繁殖の問題の訪問の詳細な分析:https://mp.weixin.qq.com/s?src=11×tamp=1581424112&ver=2152&signature=pzB-FaTI5sthz3EeISxwOsHKg-wxKYsp4KInQSAZHTgB066mHxW84REKg7PNXn6QlMJ9p04j1y2*HTPUX5eRt4GwPhbhqg7qwUvX7YmLbF28qh-bEDPqDAhjy4ekc9fH&new=1

https://mp.weixin.qq.com/s?src=11×tamp=1581424112&ver=2152&signature=pzB-FaTI5sthz3EeISxwOsHKg-wxKYsp4KInQSAZHTgB066mHxW84REKg7PNXn6QlMJ9p04j1y2*HTPUX5eRt4GwPhbhqg7qwUvX7YmLbF28qh-bEDPqDAhjy4ekc9fH&new=1

公開された21元の記事 ウォンの賞賛6 ビュー8002

おすすめ

転載: blog.csdn.net/weixin_42128329/article/details/104268045