Pythonの再帰を分類します

Lisa Kudrow
リリース: 2025-03-05 09:57:11
オリジナル
555 人が閲覧しました

Demystifying Python Recursion

Pythonプログラミングでは、多くの複雑なタスクをよりシンプルなサブタスクに分解できます。再帰は、この分解を実装する強力な方法であり、コードをより簡潔で維持しやすくすることです。このチュートリアルでは、再帰の概念、利点、およびPythonでの使用方法について説明します。

再帰とは何ですか?

再帰は、問題のより小さなインスタンスを解決することにより、問題を解決する方法です。このアプローチは、プログラミングにおける多くの課題に適用できます。

再帰の使用の利点

再帰を使用することの利点のいくつかには、

が含まれます
  • コードの書き込みを簡素化し、デバッグを簡単にします。
  • アルゴリズムの実行時間を削減します(入力長の関数として)。
  • 非常に複雑な問題(特に樹木構造に基づく問題)を解決する場合、より効果的です。
  • Python再帰関数の初心者

再帰は複雑に見えるかもしれませんが、そうではありません。簡単に言えば、2つの長方形AとBがあるとします。それらを一緒に追加して長方形Cを形成します。これはそれ自体が再帰的なプロセスです。長方形の小さなインスタンスを使用して自分自身を定義します。Python関数を書きたい場合は、次のようになります。

再帰関数はそれ自体を呼び出すため、プロセスまたはループを終了するためにルールまたはブレークポイントが必要です。この条件は、ベンチマーク条件と呼ばれます。各再帰プログラムにはベンチマーク条件が必要です。そうしないと、プロセスが無限のループになります。

def rectangle(a, b):
    return a + b
ログイン後にコピー
ログイン後にコピー
2番目の要件は、再帰的なケース、つまり関数呼び出し自体です。

例を見てみましょう:

この例では、整数(正の数)を入力として取得する要因関数を書き込みます。数値の要因は、その下にあるすべての正の整数を掛けることで得られます。たとえば、

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
ログイン後にコピー
ログイン後にコピー
フィボナッチシーケンスでは、最初の2つの数値の合計です。フィボナッチシーケンスは、多くの分野で適用されており、最も一般的には、株式市場の価格の傾向を予測する外国為替トレーダーに適用されています。

フィボナッチシーケンスは0と1で始まります。フィボナッチシーケンスの最初の数値は0、2番目の数値は1、シーケンスの3番目の項は0 1 = 1です。 4番目の用語は1 1 = 2などです。

再帰関数を取得するには、2つのベンチマークケース、つまり0と1が必要です。その後、追加モードをElseケースに変換できます。

生成された関数は次のとおりです

def rectangle(a, b):
    return a + b
ログイン後にコピー
ログイン後にコピー
ケーススタディ2:文字列の反転

この例では、文字列を入力として取得する関数を書き込み、その文字列の反転を返します。

最初にベンチマークケースを定義します。これにより、文字列が0に等しいかどうか、もしそうなら、文字列自体が返されます。

2番目のステップは、反転関数を再帰的に呼び出して、最初の文字を除く文字列の部分をスライスし、最初の文字をスライス文字列の端まで連結することです。

生成された関数は次のとおりです

ケーススタディ3:要素の合計

この例では、この例では、配列を入力として使用する関数を書き込み、リスト内の要素の合計を返します。
def factorial(n):
    # 定义基准情况
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

print(factorial(5))

# 结果
# 120
ログイン後にコピー
ログイン後にコピー

最初にベンチマークケースを定義します。これにより、リストのサイズがゼロかどうかを確認し、真の場合は0を返します。

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
ログイン後にコピー
再帰関数は、実行するためにより多くのスペースと時間が必要です。

再帰関数は複雑になり、デバッグが困難になる可能性があります。

  • このサムネイル画像は、Open Ai Dall-Eを使用して生成されます。

以上がPythonの再帰を分類しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート