これは再帰の場合です。長さ1(元の入力の最後の文字列)の文字列になるまで、元の入力の短い部分文字列を使用して関数自体を何度も呼び出します。この場合、関数は印刷を開始します。次に、文字列の残りの部分を「巻き戻し」て逆に印刷します。
この注釈付きコードを見てください:
def function(s):
if len(s) == 1:
print 'single:', s[0], # (A) this is where your first output is generated for a single character
else:
print 'calling function again with ',s[1:]
function(s[1:]) # (B) you call function again, i.e., your recursive call
print ' unwind->', s[0], # (C) the "unwinding" step, i.e, finish the rest
# of the function when you return from the recursive call
取得する出力は次のとおりです。
calling function again with 234
calling function again with 34
calling function again with 4
single: 4 unwind-> 3 unwind-> 2 unwind-> 1
初めて関数を呼び出すときは、else
句にドロップスルーし、行(B)で関数を再度呼び出しますが、今回は「234」を使用します。これで関数が再び開始されますが、「234」でもう一度ドロップスルーしてelse
関数を呼び出しますが、「34」で関数が再び実行され、もう一度ドロップスルーしてelse
「4」で関数を呼び出します。 "..今回は長さが1なので、印刷します(行A)。
ここで、この関数(巻き戻しプロセス)から戻り、再帰呼び出しを行う前の時点から再開し、現在の残りの文字の最初の文字を印刷して、文字列の残りの部分を逆に印刷します(行C) 。
再帰に最初に遭遇したとき、再帰を把握するのは難しい場合があります。これは完全に正常なことです。ある時点でクリックして明確になります。一般的な概念について読んで、明確な注釈付きの例を検索することをお勧めします(ほとんどのCS /プログラミングの本にはいくつかあります)。
これは、Pythonでの再帰を簡単な例で説明する短いYouTubeビデオです。役立つことを願っています:http ://www.youtube.com/watch?v = 72hal4Cp_2I