Pythonでフィボナッチ数列を実装する方法の例

高洛峰
リリース: 2017-01-14 16:48:12
オリジナル
2355 人が閲覧しました

はじめに

黄金分割数列としても知られるフィボナッチ数列は、次のような数列を指します: 0、1、1、2、3、5、8、13、21... 数学では、フィボナッチ数列は次のとおりです。次のように再帰的に定義されます:

F(0)=0、F(1)=1、F(n)=F(n-1)+F(n-2) (n≥2、n∈ N*)。

Pythonでフィボナッチ数列を実装する方法の例

1.タプルの実装

fibs = [0, 1]
for i in range(8):
 fibs.append(fibs[-2] + fibs[-1])
ログイン後にコピー

これは、指定された範囲内のフィボナッチ数のリストを取得できます。

2. イテレーターを実装します

class Fibs:
 def __init__(self):
  self.a = 0
  self.b = 1
 
 def next(self):
  self.a, self.b = self.b, self.a + self.b
  return self.a
 
 def __iter__(self):
  return self
ログイン後にコピー

これは、次の方法でアクセスできる無限シーケンスを取得します:

fibs = Fibs()
for f in fibs:
 if f > 1000:
  print f
  break
 else:
  print f
ログイン後にコピー

3. カスタム クラスを通じて実装します

class Fib(object):
 def __getitem__(self, n):
  if isinstance(n, int):
   a, b = 1, 1
   for x in range(n):
    a, b = b, a + b
   return a
  elif isinstance(n, slice):
   start = n.start
   stop = n.stop
   a, b = 1, 1
   L = []
   for x in range(stop):
    if x >= start:
     L.append(a)
    a, b = b, a + b
   return L
  else:
   raise TypeError("Fib indices must be integers")
ログイン後にコピー

これは、シーケンスに似たデータ構造を取得します。データにアクセスするには、次のマークを使用してアクセスできます:

f = Fib()
print f[0:5]
print f[:10]
ログイン後にコピー

4. Python は、フィボナッチ数列の比較的単純な例を実装します

最初にフィボナッチ数列を配置して見てみましょう...

0 1 1 2 3 5 8 13 21 34 55 89 144 233...
ログイン後にコピー

最初に値を割り当てます最初の 2 つの変数に:

i, j = 0, 1
ログイン後にコピー

もちろん、次のように書くこともできます:

i = 0
j = 1
ログイン後にコピー

次に、範囲を 10,000 以内に設定します:

while i < 10000:
ログイン後にコピー

次に、while ステートメントで i を出力し、ロジックを設計します:

print i,
i, j = j, i+j
ログイン後にコピー

Youここで注意が必要です: "i, j = i, i +j" このコードは次のように書くことはできません:

i = j
j = i+j
ログイン後にコピー

このように書くと、j は最初の 2 桁を加算した値ではなく、 j によって値が割り当てられた i と j を加算した値。この場合、出力は次のようになります:

0 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192
ログイン後にコピー

正しいコード全体は次のようになります:

i, j = 0, 1
while i < 10000:
 print i,
 i, j = j, i+j
ログイン後にコピー

最後に実行結果を表示します。 :

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
ログイン後にコピー


概要

以上は、Python を使用してフィボナッチ数列を実装する方法についてでした。 さて、この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご不明な点がございましたら、お気軽にお問い合わせください。通信するためにメッセージを残してください。

Python でフィボナッチ数列を実装する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート