この記事では、我々は非常に詳細にあなたに紹介し、代わりに再帰関数のPythonのループメカニズムの利用効率を高めるために、関連する知識を紹介参照のために特定の値が、参照の下で必要としている友人がある
フィボナッチ数を
その年、典型的な再帰的な問題、フィボナッチ数は、覚えていますか?
def fib(n):
if n==1 or n==2:
return 1
else:
return fib(n-1)+fib(n-2)
もちろん、順序でプログラムの堅牢性に、プラスのtry ... except ...
def fib(n):
if isinstance(n, int):
print('兄弟,输入正整数哈')
return
try:
if n==1 or n==2:
return 1
elif n <= 0:
print('兄弟别输入0或负数呀')
else:
return fib(n-1)+fib(n-2)
except RecursionError:
print('兄弟,超过了最大递归深度'
はい、関係なく、時間やスペース複雑さの、再帰は本当にハに動作していません!これは再帰的な文言です。
def fib(n):
if n==1 or n == 2:
return 1
a, b = 1, 1
for i in range(2, n):
a, b = b, a+b
return b
私は少しの三点を説明します。
FIB(n)は列数の最初のn個の用語であるようにフィボナッチ数は、1から始まるので、なぜ範囲(2、n)は、である
最初の二つは1であるので範囲のカット2は、2(SO、 、n)は()サイクルへのn-2回
、一般的にPythonインタプリタが直接、カンマ区切りのタプルとして扱われますB +は私の簡単に混乱しているかもしれないが、B = bは、変数がされている、
と理由これは開梱タプルと同等であるので、式の右辺第行うインタープリタ
、B = Bを、+の Bは、この文の本質は、方程式Bの右辺にFIB(N-2)とみなされることですA + BのFIB(N-1)とみなさ
パスカルの三角形
同様に、再帰的な書き込みを書く(ここでは、私は特別な事情を考慮し、限られた時間のためにしないでください):
def YH_tri(a, b):
if a == b or b == 0:
return 1
else:
return YH_tri(a-1, b)+YH_tri(a-1, b-1)
誰もが、リソースの収集を学ぶ非常に広いのpythonをお勧めし、ために私は、あなたへの書き込み入力する]をクリックし、共有の経験に学ぶ前に、上級プログラマがあり、研究ノート、ビジネス経験の可能性がある、と皆のために注意深くのpythonゼロを整理します細部を学ぶ実際のプロジェクトデータ、最新の技術上のあなたに、毎日のpython、見通しの根拠は、メッセージのままにしておく必要があり
要約を
上記のPythonの代わりに、再帰関数の効率を高めるためのメカニズムをループの使用を紹介する小さなシリーズで、我々は手助けをしたいです、