鉴于在递归中您使用分而治之的方法将问题分解为更小的部分,那么您将如何从问题的开头到问题的结尾读取数据?
示例:我有一个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)