2024-10-02 00:21:49 发布
网友
例如,“what”这个词就是wwhhaatt。 我不知道如何递归地做这个。 谢谢。你知道吗
递归通常由两部分组成:
在您的特定情况下,给定一个字符串,下面的伪代码应该满足您的要求:
def dubble(s): if s is "": return "" return s.firstChar + s.firstChar + dubble(s.otherChars)
换言之,将字符串加倍:如果字符串为空,则返回空字符串。否则,复制第一个字符的两个副本,并将其附加到字符串的其余部分。给定字符串'what',您将看到:
'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:]获得。你知道吗
s
s[0]
s[1:]
如果这是课堂作业,甚至是自我教育,我劝你自己去做。如果不是,您只需要一个解决方案,您可以在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
递归通常由两部分组成:
在您的特定情况下,给定一个字符串,下面的伪代码应该满足您的要求:
换言之,将字符串加倍:如果字符串为空,则返回空字符串。否则,复制第一个字符的两个副本,并将其附加到字符串的其余部分。给定字符串
'what'
,您将看到:现在,尽管上面的伪代码看起来有点像Python,但这只是因为Python是一种出色的伪代码语言。您仍然需要将算法实现为“真正的”Python,记住字符串的第一个字符
s
可以通过s[0]
获得,其他字符可以通过s[1:]
获得。你知道吗如果这是课堂作业,甚至是自我教育,我劝你自己去做。如果不是,您只需要一个解决方案,您可以在1下面看到一个。你知道吗
当然,Python爱好者(似乎重视简洁性)只需完全绕过递归,就可以做到:
1一个解决方案,如果它不是教育性的,您只需要一个答案:
相关问题 更多 >
编程相关推荐