再帰では、分割統治法を使用して問題を細かく分割しているとすると、問題の最初から問題の最後まで、どのようにデータを読み取ることができますか?
例:encrypt()
文字列内の文字を右側の3つのインデックスの文字に置き換える関数があります。
A
文字列で例えばに"ABCDEF"
なりますD
これまで、右側の3つのインデックスが定義されていないときに停止するまで再帰的に実行しましたが、これにより、文字列の最後のビットが元のビットと同じままになります。
例:"ABCDEF"
になります"DEFDEF"
再帰呼び出し中に文字列の先頭を最も内側の関数に効率的に渡す方法はありますか?
これは現在私のコードです:
def shift_cipher_noloop(plain):
encrypted = ""
if(plain == ""):
encrypted = ""
else:
if(len(plain) > 3):
temp_sub = plain[3]
encrypted = encrypted + temp_sub
encrypted = encrypted + shift_cipher_noloop(plain[1:])
else:
temp_sub = plain[0]
encrypted = encrypted + temp_sub
encrypted = encrypted + shift_cipher_noloop(plain[1:])
return encrypted
x = "ABCDEFGHIJK"
y = shift_cipher_noloop(x)
print(y)