この記事では、主にPython再帰関数の定義と使用法を紹介し、原理、実装テクニック、および関連するPython再帰関数を具体的な例の形で分析しますメモ、必要な友人はそれを参照できます
この記事の例 Python 再帰関数の定義と使用法を学びます。参考のために皆さんと共有してください。詳細は次のとおりです:
再帰関数
関数内で、他の関数を呼び出すことができます。関数がそれ自体を内部的に呼び出す場合、関数は再帰的です。
たとえば、fact(n) という関数で表される階乗 n! = 1 * 2 * 3 * ... * n を計算してみましょう:
fact(n) = n! * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fat(n-1) * n
したがって、fact(n) は n * fat と表すことができます。 (n -1)、n=1 のみ特別な処理が必要です。
それで、再帰的に書かれたfact(n)は次のようになります:
def fact(n): if n==1: return 1 return n * fact(n - 1)
上記は再帰関数です。試してみてください:
>>> fact(1) 1 >>> fact(5) 120 >>> fact(100) 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000L
fat(5) を計算すると、関数定義に従って次のように計算プロセスがわかります:
===> fact(5) ===> 5 * fact(4) ===> 5 * (4 * fact(3)) ===> 5 * (4 * (3 * fact(2))) ===> 5 * (4 * (3 * (2 * fact(1)))) ===> 5 * (4 * (3 * (2 * 1))) ===> 5 * (4 * (3 * 2)) ===> 5 * (4 * 6) ===> 5 * 24 ===> 120
再帰関数の利点は、定義が単純でロジックが明確であることです。理論的には、すべての再帰関数は loop として記述できますが、ループのロジックは再帰ほど明確ではありません。
再帰関数を使用するときはスタックオーバーフローを防ぐように注意してください。コンピュータでは、関数呼び出しはスタックのデータ構造を通じて実装され、関数呼び出しが開始されるたびにスタック フレームがスタックに追加され、関数が返されるたびにスタック フレームがスタックから減算されます。スタックのサイズは無限ではないため、再帰呼び出しが多すぎるとスタック オーバーフローが発生します。ファクト(10000)を計算してみてください。
りー以上がPython 再帰関数の定義と使用法の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。