@この記事は公開番号csdn2299から引用しています。必要に応じて、公開番号プログラマアカデミーに注目することができます。
この記事の例では、Pythonのハノタワーと再帰アルゴリズムに基づくフィボナッチシーケンスについて説明しています。次のように、参考のために共有してください。
ここでは、Pythonでの再帰の使い方を学ぶために2つの例を使用します。
- 下付き文字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)を取り上げ、再帰の実行プロセスを見てみましょう。
同じプログラム、再帰を使用しますプログラムは簡潔ですが、再帰の効率はループの効率よりも低く、システムリソース消費はサイクルよりも大きいです。再帰は、レイヤーごとに呼び出され、終了後にレイヤーごとに返されるため、再帰の実行効率は高くありません。なぜ再帰を使用するのですか?いくつかの問題のため、非常に明白なループスキームを見つけることはできませんが、明白な再帰的スキームを見つけるのは簡単です。たとえば、有名なハノイタワーの問題です。
- 羽田
次の図は、ハノイタワーゲームの簡略版で、プレートは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のコア知識を学び続け、コンピューターの基礎の詳細な研究を整理し、平凡になりたくない場合は、コーディングに参加して成長してください!
実は、ここには技術だけでなく、それ以外のものもあり、例えば「絹糸」というよりも、どうやってプログラマーとして絶妙な存在になるのか、プログラマー自体が高貴な存在ですね。[参加するにはクリックしてください]自分らしくなりたい、高貴な人になりたい、是非!