codeRose

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  在函数内部,可以调用其他函数。如果一个函数在内部调用自己本身,这个函数就是递归函数。

  计算n的阶乘:

def fact(n):
    if n==1:
        return 1
    return n*fact(n-1)
print(fact(5))

计算过程:

  使用递归函数需要注意防止栈溢出,函数调用是通过栈这种数据结构实现的,每当进入一个函数调用,栈就会加入一层栈帧,每当函数返回,栈就会减少一层栈帧。由于栈的大小不是无限的,所以,函数调用的次数过多,会导致栈溢出。例如运行fact(1000)控制台会报错:

RecursionError: maximum recursion depth exceeded in comparison

 

posted on 2017-11-30 21:14  codeRose  阅读(249)  评论(0编辑  收藏  举报