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