【发布时间】:2016-06-25 17:46:02
【问题描述】:
我想要一个程序,只通过递归和 if-else 子句以这种方式打印一个单词:
P
派
派特
皮斯
毕索
蟒蛇
为什么下面的代码不起作用?它给了我一个超出最大递归深度的错误。
def oneToAll (word, x):
if -x < 0:
print(word[:-x])
oneToAll(word, x+1)
else:
return
wordOutside = "Python"
oneToAll(wordOutside, len(wordOutside))
【问题讨论】:
-
当你递归时你不想
x - 1而不是x + 1吗? -
对字符串进行递归很棘手,因为您可以遍历一个空字符串...
-
@jonrsharpe -- OP 并没有真正迭代字符串。递归实际上是向下传递一个索引。这可能不是在 python 中进行递归的典型方法,但我认为这对于这个问题是有意义的,因为 op 想要打印
'P'before'Py'等 -
你有无限递归,因为非空字符串的长度总是正数,因为你的递归情况总是增加 x,因此
-x总是小于 0 -
你为什么用
-x < 0而不是简单的x > 0?