2017寒假零基础学习Python系列之函数之 递归函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017寒假零基础学习Python系列之函数之 递归函数相关的知识,希望对你有一定的参考价值。

什么是递归函数?
在函数内部,也可以继续调用其他函数,如果一个函数在内部调用本身,这个函数为递归函数
举一个求n的阶乘的例子:

def fact(n):
if n == 1:
return 1;
else:
return n * fact(n-1)
print fact(5)
>>>120

以上就是一个递归函数

这个函数运行的过程如下:

===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120

注:但使用递归函数需要防止栈(stack)溢出,函数的调用是通过栈(stack)这种数据结构来实现,每当进入一个函数调用,栈就会增加一层栈帧,每当函数返回时,就会减少一层栈帧,由于栈的大小不是无限的,所以,递归调用的次数过多时,会导致栈溢出



以上是关于2017寒假零基础学习Python系列之函数之 递归函数的主要内容,如果未能解决你的问题,请参考以下文章

2017寒假零基础学习Python系列之函数之 返回多个值

Python零基础学习系列之二--Python介绍及环境搭建

《C#零基础入门之百识百例》(三十八)常用方法 -- Math类

零基础学PythonDay5 Python基本数据类型之List

零基础学PythonDay4 Python基本数据类型之String

《C#零基础入门之百识百例》(四十三)类的构造和析构函数 -- 模拟用户注册