我希望有一个程序可以通过递归和if-else子句以这种方式向我显示单词:


  P
  y
  y
  腐霉菌
  毕索
  蟒蛇


为什么以下代码不起作用?它给了我一个超过最大递归深度的错误。

def oneToAll (word, x):
    if -x < 0:
        print(word[:-x])
        oneToAll(word, x+1)
    else:
        return

wordOutside = "Python"
oneToAll(wordOutside, len(wordOutside))

最佳答案

def oneToAll (word, x):
    if -x < 0:
        print(word[:-x])
        oneToAll(word, x-1)
    elif x == 0:
        print(word)
    else:
        return

wordOutside = "Python"
oneToAll(wordOutside, len(wordOutside))


这似乎有效。请注意,我现在使用x-1而不是x+1递归,因为您希望x始终朝着0的方向努力。

以这种方式实现,您必须处理x == 0的特殊情况。在这种情况下,您要打印整个字符串,而不是word[:0](始终为空字符串)。另请注意,我没有从0分支进一步递归。这是因为到此为止,您已经完成了。实际上,您可以完全删除else子句(尝试一下!)。

关于python - 基本的字符串递归?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35923991/

10-13 04:21