如何在python中编写一个递归函数的代码,该函数返回一个字符串并重复其参数中的每个字符?

2024-10-02 00:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,“what”这个词就是wwhhaatt。 我不知道如何递归地做这个。 谢谢。你知道吗


Tags: whatwwhhaatt
1条回答
网友
1楼 · 发布于 2024-10-02 00:21:49

递归通常由两部分组成:

  • 以稍微不太复杂的案件来界定复杂案件;以及
  • 定义一个基本案例,所有其他案例最终都基于此。你知道吗

在您的特定情况下,给定一个字符串,下面的伪代码应该满足您的要求:

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:]获得。你知道吗

如果这是课堂作业,甚至是自我教育,我劝你自己去做。如果不是,您只需要一个解决方案,您可以在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

相关问题 更多 >

    热门问题