• 算法——递归


    递归(Recursion)

    算法——递归

    递归(Recursion):只是让解决方案更清晰,并没有性能上的优势。

    基线条件(base case):函数停止调用自己,避免无限循环
    递归条件(recursive case):函数调用自己

    栈(stack):压入(push)和弹出(pop),FILO(Fist In Last Out),后进先出
    调用栈(call stack):可能很长,将占用大量内存

    # recursion 递归
    
    
    def countdown(i):
        print(i)
        if i <= 0:  # 基线条件(base case)
            return
        else:
            countdown(i-1)  # 递归条件(recursive case)
    
    
    def fact(x):  # call stack 调用栈
        if x == 1:
            return 1
        else:
            return x * fact(x-1)
    
    
    def fibonacci(end, x=1, y=1):
        if end < x:  # base case
            return []
        else:  # recursive case
            return [x] + fibonacci(end, y, x+y)
    
    
    if __name__ == '__main__':
        countdown(5)
        print(fact(5))
        print(fibonacci(120))
    Resistance is Futile!
  • 相关阅读:
    第二周进度条博客
    软件工程个人作业01
    动手动脑1
    构建之法阅读笔记06
    构建之法阅读笔记05
    构建之法阅读笔记04
    poj 1631 LIS
    poj 1609 dp
    lightoj 1198 最大权重匹配
    hdu4696 想法题
  • 原文地址:https://www.cnblogs.com/noonjuan/p/10922263.html
Copyright © 2020-2023  润新知