最初のステップは、この問題を細かく分割することです。
1. 文字が文字列に含まれているかどうかを確認するにはどうすればよいですか?
これを再帰的に行っている場合は、文字列の最初の文字かどうかを確認する必要があります。
2. 2 つのキャラクターを比較するにはどうすればよいですか?
Python には、 2 つのものが等しい==
かどうかを判断する演算子があります。
3. 文字列の最初の文字が一致するかどうかがわかった後、どうすればよいですか?
文字列の残りの部分に進む必要がありますが、これまでに見た文字の数をどうにかして維持する必要があります。これは通常、for ループの外側で変数を宣言できるため非常に簡単ですが、新しい関数呼び出しごとにプログラムの状態を再帰的に渡す必要があります。
文字列の長さを再帰的に計算する例を次に示します。
def length(s):
if not s: # test if there are no more characters in the string
return 0
else: # maintain a count by adding 1 each time you return
# get all but the first character using a slice
return 1 + length( s[1:] )
この例から、問題を完了できるかどうかを確認してください。あなたの場合、追加のステップが 1 つあります。
4. いつ再帰をやめるのですか?
これは、再帰を扱うとき、いつ自分自身を思い出すのをやめる必要があるのかという疑問です。これを理解できるかどうかを確認してください。
編集:
not s
Python では空の文字列が;""
に評価されるため、s が空かどうかをテストします。False
とnot False == True