递归算法的条件与评价[附python实现代码]

递归算法的两个个条件

1.递归条件        

2.终止条件

递归算法的优缺点

1、代码更简洁清晰,可读性更好;

2、时间和空间消耗比较大;

3、很多计算都是重复的;

4、调用栈可能会溢出。

递归的优缺点是什么?-php教程-PHP中文网

1-003-什么是递归_哔哩哔哩_bilibili

题目

力扣70题:

方案一(能运行,但是过不了力扣的标准,时间过了)

class Solution(object):
    def climbStairs(self, n):
        """
        :type n: int
        :rtype: int
        """
        if n == 0 or n == 1:    # 当只有0阶或一阶台阶时返回1
            return 1
        else:                  # 当n>=2时调用ClimbStairs函数,来构造公式W(n)=W(n-1)+W(n-2)
            return self.climbStairs(n-1) + self.climbStairs(n-2)

 
 
if __name__ == '__main__':
        
        ins=Solution()
        n = int(input('enter n:'))   # input获取的n为字符串需要用int()转换成数值
        way = ins.climbStairs(n)
        print(way)

当n=45的时候超出时间限制

方案二,参考Python每日一练--------递归,动态规划(爬楼梯)_亖夕的博客-CSDN博客_python用递归实现上楼梯

class Solution(object):
    def climbStairs(self, n):
        """
        :type n: int
        :rtype: int
        """
        # if n == 0 or n == 1:    # 当只有0阶或一阶台阶时返回1
        #     return 1
        # else:                  # 当n>=2时调用ClimbStairs函数,来构造公式W(n)=W(n-1)+W(n-2)
        #     return self.climbStairs(n-1) + self.climbStairs(n-2)
        a = b = 1
        for i in range(2, n + 1):
            a, b = b, a + b
        return b

 
 
# if __name__ == '__main__':
        
#         ins=Solution()
#         n = int(input('enter n:'))   # input获取的n为字符串需要用int()转换成数值
#         way = ins.climbStairs(n)
#         print(way)

猜你喜欢

转载自blog.csdn.net/weixin_43332715/article/details/127416591