递归
自己调用自己就是递归
实现n的阶乘:
def factorial(n):
if n == 1:
return 1;
else:
return n * factorial(n - 1)
这样就实现了一个计算一个数的阶乘,这里阶乘有两个关键的条件,n == 1 和 n != 1,被称为基线条件和递归条件,如果条件没有写好的话,会造成无限循环。
栈
是一种数据结构,先进先出的,也叫压入和弹出。
看看5的阶乘是如何调用的呢?第一次n=5
当函数被执行完毕,也就是n = 1,整个程序边将东西放在一个调用栈里。在调用的时候,是从上往下调用的。也就栈的先进先出。