fan1993423 发表于 2018-3-11 22:09:45

输入一个正整数,求从1的阶乘到这个数的阶乘之和。

先上代码:
def f(x):
    i=1
    p=1
    while i<=x:
      p=p*i
      i+=1
    return p
def m(x):
    if x==1:
      return 1
    else:
      f(x)+m(x-1)
      
我是这样想的 先定义一个f(x)是判断这个数的阶乘,然后在定义m(x),然后根据m(x)=x!+m(x-1)递归求出答案,在运行f()能正确显示,但运行m()显示unsupported operand type(s) for +: 'int' and 'NoneType',请问各位大佬,我这个思路能不能行的通,如果行的通麻烦在我这个代码的基础上改一下,并说一下问题。谢谢。

冬雪雪冬 发表于 2018-3-11 22:16:42

最后一行
return f(x)+m(x-1)

fan1993423 发表于 2018-3-11 22:20:26

冬雪雪冬 发表于 2018-3-11 22:16
最后一行
return f(x)+m(x-1)

谢谢,真的是个低级失误,献丑了。以后多检查一下再发到论坛里
页: [1]
查看完整版本: 输入一个正整数,求从1的阶乘到这个数的阶乘之和。