Pythonの関数チュートリアル:代わりに再帰関数の循環機構の効率を高めるために、Pythonの使用

この記事では、我々は非常に詳細にあなたに紹介し、代わりに再帰関数の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の代わりに、再帰関数の効率を高めるためのメカニズムをループの使用を紹介する小さなシリーズで、我々は手助けをしたいです、

公開された24元の記事 ウォン称賛38 ビュー20000 +

おすすめ

転載: blog.csdn.net/haoxun10/article/details/104761508