Pythonの再帰アルゴリズムに基づくハノイタワーとフィボナッチ数列の例

@この記事は公開番号csdn2299から引用しています。必要に応じて、公開番号プログラマアカデミーに注目することができます。
この記事例では、Pythonのハノタワーと再帰アルゴリズムに基づくフィボナッチシーケンスについて説明しています。次のように、参考のために共有してください。

ここでは、Pythonでの再帰の使い方を学ぶために2つの例を使用します。

  1. 下付き文字n(下付き文字は0から数えます)を持つフィボナッチ数列内の数を求めます

フィボナッチ数列の形式は次のとおりです:0、1、1、2、3、5、8、13 ...

①whileループを使用したpython2コードは次のとおりです。

def fib(n):
  a,b=0,1
  count=0
  while count<n:
    a,b=b,a+b
    count=count+1
  print a

結果は次のとおりです。

>>> fib(0)
0
>>> fib(1)
1
>>> fib(2)
1
>>> fib(3)
2
>>> fib(4)
3
>>> fib(5)
5

②再帰を使用します(再帰には境界条件が必要です)。python2コードは次のとおりです。

def fib(n):
  if n==0 or n==1:#递归的边界条件
    return n
  else:
    return fib(n-1)+fib(n-2)

結果は次のとおりです。

>>> fib(0)
0
>>> fib(1)
1
>>> fib(2)
1
>>> fib(3)
2
>>> fib(4)
3
>>> fib(5)
5

再帰は、計算の考え方を最もよく表現できるアルゴリズムの1つです。例としてf(4)を取り上げ、再帰の実行プロセスを見てみましょう。ここに画像の説明を挿入
同じプログラム、再帰を使用しますプログラムは簡潔ですが、再帰の効率はループの効率よりも低く、システムリソース消費はサイクルよりも大きいです。再帰は、レイヤーごとに呼び出され、終了後にレイヤーごとに返されるため、再帰の実行効率は高くありません。なぜ再帰を使用するのですか?いくつかの問題のため、非常に明白なループスキームを見つけることはできませんが、明白な再帰的スキームを見つけるのは簡単です。たとえば、有名なハノイタワーの問題です。

  1. 羽田

次の図は、ハノイタワーゲームの簡略版で、プレートは4つだけです。ここに画像の説明を挿入
ハノイタワーゲームのルールは次のとおりですここに画像の説明を挿入
。Python2コードは次のとおりです。

def hanoi(a,b,c,n):
  if n==1:#递归结束条件
    print a,'->',c
  else:
    hanoi(a,c,b,n-1)
    print a,'->',c
    hanoi(b,a,c,n-1)

演算結果:

>>> hanoi('A','B','C',1)
A -> C
>>> hanoi('A','B','C',2)
A -> B
A -> C
B -> C
>>> hanoi('A','B','C',3)
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C

読んでいただきありがとうございます
。大学でpythonを勉強することに決めたとき、私はコンピューターの基礎がよくなかったことがわかりました。私は学問の資格を持っていませんでした。これは
何もすることはできません。埋め合わせるしかできないので、コーディング以外で自分の反撃を始めました。道は、Pythonのコア知識を学び続け、コンピューターの基礎の詳細な研究を整理し、平凡になりたくない場合は、コーディングに参加して成長してください!
実は、ここには技術だけでなく、それ以外のものもあり、例えば「絹糸」というよりも、どうやってプログラマーとして絶妙な存在になるのか、プログラマー自体が高貴な存在ですね。[参加するにはクリックしてください]自分らしくなりたい、高貴な人になりたい、是非!

元の記事を40件公開 14 件を賞賛 20,000回以上の閲覧

おすすめ

転載: blog.csdn.net/chengxun03/article/details/105497901