今天简单聊聊递归,递归还是比较难理解的,虽然它很好用。在《算法图解》的帮助下,我也是简单的理解了一下,下面把书上大佬的想法及我自己的收获整理一下。
先介绍一种新的数据结构:栈
栈 是一种简单的数据结构,可以看成是一个桶,从顶部插入数据,也从顶部弹出数据,且只有这两种操作
递归,就是自己调用自己,可以理解为一个函数内部调用了自己本身,下面举一个简单的例子:
求10以内的阶乘,代码如下:
def fact(num):
if num == 1:
return num
else:
return num * fact(num-1)
print fact(5)
如上代码,else里面调用了函数自己本身。当然你也可以不用递归,用个for循环遍历也可以,像这样:
sum = 1
for x in range(1,6):
sum = sum * x
print sum
如果没有理解递归,可能会觉得for循环更简单一点(其实简单的我还是愿意用for循环),理解了之后,看递归的代码就会觉得简洁不少。下面说一下对递归的理解:
递归必须有两部分:基线条件(常说的出口,停止调用自己,不然会无限循环),递归条件</