基本的なテクニックは、最初は小さな入力から始めることです。次に、1 つ大きいもので試します。次に、それよりも大きいもので試してください。再帰関数の場合、前の関数がどのように見えるかを知っていれば、次の関数がどのようになるかを予測できるパターンが出現するはずです。
それでは、空の文字列から始めましょう。簡単です。何も印刷されません。
input: ""
output:
次は長さ 1 の文字列です。ほぼ同じように、2 つの再帰呼び出しはそれぞれ何もせず (空の文字列の場合)、文字列の文字が出力されます。
input: "z"
output: z
次は長さ 2 の文字列です。再帰呼び出しのそれぞれは、最終的に 2 番目の文字 (大文字と小文字が 1 文字の長さの文字列) を出力し、次に最初の文字を出力します。
input: "yz"
output: zzy
では、長さ 3 の文字列の場合に何が起こるかを予測してみましょう。何が起こるかというと、最初の文字を除外した部分文字列が 2 回処理され、最初の文字が出力されます。その部分文字列は、長さ 2 の文字列です。そう:
input: "xyz"
output: zzyzzyx
したがって、現在の出力シーケンスから次の出力シーケンスを導き出す方法は明らかです。