码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-02-06 19:44:42      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:实现   tac   16px   pytho   基础学习   基础   使用   栈溢出   mil   

什么是递归函数?
在函数内部,也可以继续调用其他函数,如果一个函数在内部调用本身,这个函数为递归函数
举一个求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系列之函数之 递归函数

标签:实现   tac   16px   pytho   基础学习   基础   使用   栈溢出   mil   

原文地址:http://www.cnblogs.com/dreamcoding/p/6371310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!