python递归函数栈 python中的递归函数( 三 )


对于递归调用的问题,我们在前一段时间写图形学程序时,其中有一个四连同填充算法就是使用递归的方法 。结果当要填充的图形稍微大一些时 , 程序就自动关闭了.这不是一个人的问题,所有人写出来的都是这个问题.当时我们给与的解释就是堆栈溢出 。就多次递归调用占用太多的内存资源致使堆栈溢出,程序没有内存资源执行下去,从而被操作系统强制关闭了.这是一个真真切切的例子 。所以我们在使用递归的时候需要权衡再三.
python递归函数python递归函数是什么?一起来看看吧:
递归函数就是在函数内部 , 可以调用其他函数 。如果一个函数在内部调用自身本身,这个函数就是递归函数 。
举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出:
fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n
所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理 。
于是 , fact(n)用递归的方式写出来就是:
def fact(n):if n==1:return 1return n * fact(n - 1)
函数内部的代码是相同的 , 只是针对参数不同,处理的结果不同 。当参数满足一个条件时 , 函数不再执行 , 通常被称为递归的出口,否则会出现死循环 。
例如:
def sum_numbers(num):print(num)#递归的出口很重要,否则会出现死循环if num==1:returnsum_numbers(num-1)sum_numbers(3)
python递归函数栈的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python中的递归函数、python递归函数栈的信息别忘了在本站进行查找喔 。

推荐阅读