例如,“什么”这个词将是什么样的。 我无法确定如何递归地执行此操作。 感谢。
答案 0 :(得分:2)
递归通常包含两件事:
在您的特定情况下,给定一个字符串,以下伪代码应该执行您想要的操作:
def dubble(s):
if s is "":
return ""
return s.firstChar + s.firstChar + dubble(s.otherChars)
换句话说,要将字符串加倍:如果字符串为空,则返回空字符串。否则制作第一个字符的两个副本,并将其附加到字符串的双重其余部分。给定字符串'what'
,您将看到:
dubble('what')
-> 'w' + 'w' + dubble('hat')
-> 'w' + 'w' + 'h' + 'h' + dubble('at')
-> 'w' + 'w' + 'h' + 'h' + 'a' + 'a' + dubble('t')
-> 'w' + 'w' + 'h' + 'h' + 'a' + 'a' + 't' + 't' + dubble('')
-> 'w' + 'w' + 'h' + 'h' + 'a' + 'a' + 't' + 't'
-> 'wwhhaatt'
现在,虽然上面的伪代码看起来像有点像Python,但这只是因为Python是伪代码的绝佳语言。你仍然需要将算法实现为“真正的”Python,记住字符串s
的第一个字符可以通过s[0]
获得,其他字符可以通过s[1:]
获得。< / p>
如果这是课堂作业甚至是自我教育,我建议你自己做。如果没有,并且您只想要一个解决方案,您可以在 1 下面看到一个。
当然,Python爱好者(似乎很看重简洁)只会完全绕过递归,而且会这样做:
print(''.join([c * 2 for c in "what"]))
1 一个解决方案,如果它不是教育性的,你只想要一个答案:
def dubble(s):
if len(s) == 0: return ""
return s[0] + s[0] + dubble(s[1:])
print(dubble("what")) # Remove outer () for Python 2