我尝试打印1!到10!但遇到了runtimeError

时间:2018-08-01 09:54:59

标签: python python-2.7 runtime-error

这是我的代码:

def factR(n):
  if n == 1:
    return n
  return n * factR(n-1)

for i in range (11):
  print factR(i)

factR(n)函数可以正常工作。我已经测试过了但是,在我添加了最后两行之后,它返回了RuntimeError。我可以知道原因吗?

3 个答案:

答案 0 :(得分:3)

您的代码不适用于n = 0,它可以进行无限递归。 range(11)代表我从0到10。

答案 1 :(得分:2)

您没有考虑n等于0的情况,但是您的范围从0(到10)开始。由于0!等于1,因此您只需更改:

if n == 1:
    return n

收件人:

if n <= 1:
    return 1

更改后,您的代码将输出:

1
1
2
6
24
120
720
5040
40320
362880
3628800

答案 2 :(得分:0)

如果您不想使用0!,只需将range(11)替换为range(1,11)。否则,只需遵循其他用户的上述建议即可。