0

いいえ、これは宿題ではありませんが、テスト用のスタディ ガイドに記載されています。return ステートメントが果たす役割と、再帰が果たす役割を理解する必要があります。x = 1 の後で関数が壊れない理由がわかりません。

def thisFunc(x):
    print(x)
    if x>1:
         result=thisFunc(x-1)
         print(result)
    return x+1

申し訳ありませんが、これがどれほど初歩的なことかは理解していますが、本当に助けが必要です。おそらく、どこにも説明が見つからないのは...とても簡単だからです。

編集:なぜそれが何をするのか、なぜ最後に x の値を出力するのですか? たくさん聞いてすみません、ただイライラしているだけです

4

2 に答える 2

1

値を指定して関数を入力するとn>1、現在の値が出力され、それが self で呼び出されn-1ます。内部関数が戻ると、n - 1 + 1ちょうど の値を返しますn。したがって、関数は値nを 2 回 (内部再帰の前に 1 回、再帰の後に 1 回) 出力します。

基本ケースである の場合n == 1、関数は11 回だけ出力し、それ自体を再度呼び出しません (したがって、出力にresult戻りません)。代わりに、単に返されるため、なぜ1一度だけ印刷されるのですか。

玉ねぎと同じと考えてください。

呼び出しthisFunc(n)は次のようになります

n
# what ever the output (via print) of thisFunc(n-1) is
n 
于 2013-01-30T04:19:23.960 に答える
0

x = 1 の後で関数が壊れない理由がわかりません。

しかし、それは:

>>> ================================ RESTART ================================
>>> x = 1
>>> def thisFunc(x):
    print("Function called on x-value: ", x)
    if x > 1:
        result = thisFunc(x-1)
        print(result)
    return x+1

>>> thisFunc(x)
Function called on x-value:  1
2
>>>

編集:なぜそれが何をするのか、なぜ最後に x の値を出力するのですか? まあ、あなたがそうするように言っているので、それはそれを印刷します。関数を実行しながら x の値をたどってみてください (「x は1、1 は 1より大きくない。1+1 を返す。[新しいケース] x は 2、2 は 1 より大きい...」そしてすぐ)。

returnそしてrecursionプログラミングの一部です。return ステートメントは、関数の終了を指定し (さらに数行のコードがある場合でも)、要求されたものにデータを返します。あなたの場合、「これらのルールを考えると、x が 1 の場合はどうなりますか?」と尋ねています。返されたデータがあなたの答えです。

再帰とは、(あなたが) 必要な場合に、関数自体にそれ自体を呼び出させるという単純な問題です。プログラムに、「x が 1 よりも大きい限り、この関数を呼び出して [最初に呼び出された関数と同じである] を呼び出して、その機能を実行させます」と指示するだけです。関数をよりよく理解するために、関数内"Function called on x-value: "の最初のprintステートメントに行を追加するか、少なくとも印刷された行がxであるかを識別できるようにすることをお勧めしますresult

再帰のより詳細な説明については、フラッド フィル アルゴリズムとゾンビと猫で説明された再帰をお勧めします

于 2013-01-30T04:53:53.813 に答える