在递归中,您使用分而治之的方法将问题分解为更小的部分,那么您如何能够从问题的开始、问题的结尾读取数据呢?在
示例:我有一个an encrypt()
函数,它将字符串中的字符替换为右边的3个索引:
例如,字符串"ABCDEF"
中的A
变成{
到目前为止,我递归地执行它,直到当右边的3个索引未定义时它停止,但是这会使字符串的最后一位与原始的相同。在
示例:"ABCDEF"
变成{
在递归调用期间,有没有一种方法可以有效地将字符串的开头传递给最里面的函数?在
这是我当前的代码:
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)
一般来说,可以选择将一个附加参数传递到递归函数中,该函数不变地向下传递到递归的深层嵌套中。您还可以使用内部函数,该函数始终可以访问外部函数的参数:
如果不必使用递归,那么我将使用简单的字符串方法。在
我也很喜欢罗希特·贾因的回答
也许这并不能完全解决你的问题,但你可能需要塑造它一点,使它适合。我看到你想要递归。我刚刚演示了当你到达绳子的末端时,你如何移动到开头。在
取
i + 3
的模数与字符串长度自动移到开头:所以,当}->;返回到第一个字符
i = 3
,i + 3 = 6
,和{如果您想使用
^{pr2}$Recursion
,这里是您修改过的程序:输出:-
我在您的
method
中又添加了一个参数,我用它来获取适当的索引。而且,每次将第一个字符移到末尾时,我都会将完整的字符串传递给方法。在另外,如果
len(plain) <= 3
,您可以简单地返回字符串。在相关问题 更多 >
编程相关推荐