python递归求和这么写为啥不行

# -*- coding:utf-8 -*-
class Solution:
    t = 0

    def jumpFloorII(self, number):
        if number > 1:
            self.t = self.t + int(self.jumpFloorII(number-1))
        else:
            self.t = 1
        return self.t

然后结果不管输多少都是1

因为你这个实际只执行了一次
很好理解啊,第一次递归直接return了,就跑了一次,
所以返回值是1,递归的深度需要用if语句来确定条件return ,你这个没有条件判断 直接就return了 递归失败。


class Solution:
    t=0

    def jumpFloorII(self, number):

        if number>0:

            self.t += number
        else:
            return
        self.jumpFloorII(number-1)


if __name__ == '__main__':
    a=Solution()
    a.jumpFloorII(3)
    print(a.t)


因为你的结尾是 self.t = 1

# -*- coding:utf-8 -*-
class Solution:
    t = 0
    def jumpFloorII(self, number):
        if number > 1:
            self.t = number + int(self.jumpFloorII(number-1))
        else:
            self.t = number+self.t
        return self.t

img