尾递归

尾递归

尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况

def fact(n):

        return fact_iter(n,1)

def fact_iter(num, product):

        if num ==1:

                return product

        return fact_iter(num -1, num * product)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 递归 使用递归函数需要注意防止栈溢出问题。在计算机中函数调用是通过栈(stack)这种数据结构实现的,每当进入一个...
    Cookie_hunter阅读 297评论 0 0
  • 前言 众所周知,递归函数容易爆栈,究其原因,便是函数调用前需要先将参数、运行状态压栈,而递归则会导致函数的多次无返...
    灼弦阅读 956评论 1 4
  • 1.递归与尾递归 1.1 递归 1.1.1 递归定义 递归大家都不陌生,一个函数直接或间接的调用它自己本身,就是递...
    枫叶_huazhe阅读 2,920评论 0 3
  • 一个暗淡无光的黄昏 理想面如死灰 和夕阳一起沉沦 推杯换盏,醉生梦死 用尽仅存的一丝力气 关上了最后的门 桌子上的...
    上官飞鸿阅读 270评论 27 34
  • 我在四十三岁之前都是童话世界里的公举。。。无忧无虑。。。不管不顾。。。肆意人生。。。不知道菜米油盐。。。不知道生活...
    安安妈咪211阅读 317评论 0 0