Pythonプログラミングでは、多くの複雑なタスクをよりシンプルなサブタスクに分解できます。再帰は、この分解を実装する強力な方法であり、コードをより簡潔で維持しやすくすることです。このチュートリアルでは、再帰の概念、利点、およびPythonでの使用方法について説明します。
再帰は、問題のより小さなインスタンスを解決することにより、問題を解決する方法です。このアプローチは、プログラミングにおける多くの課題に適用できます。
再帰を使用することの利点のいくつかには、
が含まれます再帰関数はそれ自体を呼び出すため、プロセスまたはループを終了するためにルールまたはブレークポイントが必要です。この条件は、ベンチマーク条件と呼ばれます。各再帰プログラムにはベンチマーク条件が必要です。そうしないと、プロセスが無限のループになります。
def rectangle(a, b): return a + b
例を見てみましょう:
この例では、整数(正の数)を入力として取得する要因関数を書き込みます。数値の要因は、その下にあるすべての正の整数を掛けることで得られます。たとえば、
、、
。
factorial(3) = 3 x 2 x 1
最初にベンチマークケース、つまり因子(0)= 1を定義します。 factorial(2) = 2 x 1
factorial(0) = 1
上記のように、連続した各要因シーンの間に関係があります。要因(4)= 4 x要因(3)に注意する必要があります。同様に、要因(5)= 5 x要因(4)。
2番目の部分は、それ自体を呼び出す関数を書き込みます。
単純化した後、生成された関数は次のとおりです
if
の場合、解決策はです
def factorial(n): # 定义基准情况 if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) # 结果 # 120
n==0
ケーススタディ1:Fibonacciシーケンス
def factorial(n): # 定义基准情况 if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(0)) # 结果 # 1
フィボナッチシーケンスは0と1で始まります。フィボナッチシーケンスの最初の数値は0、2番目の数値は1、シーケンスの3番目の項は0 1 = 1です。 4番目の用語は1 1 = 2などです。
再帰関数を取得するには、2つのベンチマークケース、つまり0と1が必要です。その後、追加モードをElseケースに変換できます。
生成された関数は次のとおりです
def rectangle(a, b): return a + b
最初にベンチマークケースを定義します。これにより、文字列が0に等しいかどうか、もしそうなら、文字列自体が返されます。
2番目のステップは、反転関数を再帰的に呼び出して、最初の文字を除く文字列の部分をスライスし、最初の文字をスライス文字列の端まで連結することです。
生成された関数は次のとおりです
ケーススタディ3:要素の合計
この例では、この例では、配列を入力として使用する関数を書き込み、リスト内の要素の合計を返します。def factorial(n): # 定义基准情况 if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) # 结果 # 120
2番目のステップは、要素とfunction sum()への呼び出しを返し、リストの要素を差し引きます。
ソリューションは次のとおりです
空のリストの解決策は次のとおりです。
結論
このチュートリアルでは、再帰を使用してPythonで複雑なプログラムを解決するために必要なものについて説明します。また、再帰には独自の制限があることにも注意する必要があります。def factorial(n): # 定义基准情况 if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(0)) # 结果 # 1
多くのスタックスペースを再帰的に占有するため、プログラムの維持が遅くなります。
def fibonacci(n): # 定义基准情况 1 if n == 0: return 0 # 定义基准情况 2 elif n == 1: return 1 else: return fibonacci(n - 1) + fibonacci(n - 2) print(fibonacci(5)) # 结果为 5
以上がPythonの再帰を分類しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。