算法——递归

递归(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))

猜你喜欢

转载自www.cnblogs.com/noonjuan/p/10922263.html