其实python中递归函数和PHP中的递归函数差不多,没什么太大的区别,就是函数自身调用自己。
递归实现的逻辑循环也可以实现,但为什么要用递归呢,因为递归的代码更少,逻辑更清晰,再加上python的简单优雅,自然就更完美了!
不过在使用递归函数的时候有一点是需要注意的,那就是栈溢出问题,那么如何解决栈溢出的问题呢?什么情况会出现栈溢出的问题?
当我们递归函数的返回是一个表达式而不是一个变量的时候,递归的次数过多时就会出现栈溢出的问题,python解释器就会报错!
下面简单写一个递归函数:
defmyfact(x):if(x==1):return1;returnx*myfact(x-1);
这是计算一个数x的阶乘的函数,数学效果是x!=1*2*3*4*5*6*7*8*9*....x,当执行myfact()的时候可以正常输出结果,当myfact(0)的时候python就会报错了,因为返回结果是表达式,出现了栈溢出的情况,如何解决呢,代码如下:
defmyfact(x):returnfact(x,1);deffact(x,n):ifx==1:returnn;returnfactr(x-1,x*n);
好啦,上面就是简单的递归函数部分的知识,希望对小伙伴们有所帮助!