在定义一个函数时候,只需知道其终止的条件,无需知道其执行方法,仅需在函数中调用函数本身即可,这种魔性的写法就叫做递归函数,江湖上有一句:人能理解循环,神能理解递归。
0x00 递归函数与斐波那契数列
递归函数有时候可以将复杂的问题,变的比较简单,复杂的过程交给计算机去完成。最完美的例子就是斐波那契数列。
#斐波那契
#0, 1, 1, 2, 3, 5, 8, 13,
def fibonacci(n):
if n <=1:
return n
else:
ret = fibonacci(n-1)+fibonacci(n-2)
return ret
ret = fibonacci(30)
print(ret)
通过在我们定义的函数中调用函数本身从而来算出过最后我们需要的结果。不过当我们输入一个数字较大的结果时候,发现控制台并不能输出结果。这是因为调用的次数实在是太大了。所以递归次数过多的函数,可能就不太适合用递归来解决了。其主要的缺点就是太过于占用内存,当然不可否他的有点,让我们的代码变的很简单。
0x01 更完美的斐波那契数列
虽然用斐波那契数列可以较为容易的理解了递归函数的使用。之前也说,当需要知道特别靠后的数值的时候,那么递归次数很变的很多,因而不太适合用递归函数来解决,所以可以考虑使用别的方法来完成代码。
def fibonacci(n):
x,y = 0,1
count = 0
while count