0

while または for を使用する代わりに、呼び出され続ける関数であるループが進行中です。(様々な理由でこれをしなければなりません。)

私は、関数中の特定の条件下で、残りのコードをスキップして次の反復に進むことが非常に役立つポイントにいます。

関数の「続行」に相当するもの、または関数を終了する「逆関数呼び出し」のようなものがあるかどうか疑問に思っていました..

4

1 に答える 1

1

あなたが説明していることは「再帰」と呼ばれ、再帰呼び出しが実行されている条件を処理することで「反復をスキップ」できます。

たとえば、1 から 10 までのすべての数字を加算する必要があるとしましょう。ただし、数字の 5 はスキップしcounterます。

counter = 0
for n in range(1, 11):
    if n == 5:
        continue
    counter += n

再帰を使用すると、上記のコードは次のようになります。

def adder(n):
    if n > 10: # base case of recursion
        return 0
    if n == 5: # recursive call to skip
        return adder(n+1)
    else:      # normal recursive call
        return n + adder(n+1)

このように呼び出すと、期待される結果が得られます。

adder(1)
=> 50

この例では、現在の反復をスキップして次の反復にジャンプするため、ケースが関数if n == 5の for として機能することに注意してください。continueどのように?再帰呼び出しで何もせずに、次の値に進むだけですnこれを、呼び出しの結果に追加する「通常の」再帰呼び出しと比較してください。

関数から単に戻ること (コメントで提案されているように) は、反復をスキップすることと同じではなく、「ループから抜け出す」ことに似ています。「ループを続ける」には、上記のように再帰を再度呼び出す必要があります。

于 2013-07-15T00:33:15.990 に答える