美文网首页
递归和尾递归

递归和尾递归

作者: 夕阳下的不回头 | 来源:发表于2018-08-09 10:15 被阅读25次

作者:匿名用户

链接:https://www.zhihu.com/question/20761771/answer/19996299

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考我在Stackoverflow问的这个问题:

Why does C preserves both goto and while, involving tail recursion

以及:

What is tail-recursion?

为什么C语言同时保留‘goto’语句和‘while’,和尾递归有什么关系?

尾递归是什么?

转自知乎

写在后面:

众所周知递归随着深度增加可能出现一些问题 比如爆栈之类的

且占用内存空间大 出入栈麻烦

尾递归相当于把栈的深度用某个参数记录下来

当栈深度到达边界条件时(一般是为0或1时)退出

这样不用记录每一层的数据

只需要执行当前层的操作就可以了

再引用知乎上某用户的回答

function story() {

从前有座山,山上有座庙,庙里有个老和尚,一天老和尚对小和尚讲故事:story() // 尾递归,进入下一个函数不再需要上一个函数的环境了,得出结果以后直接返回。

}

function story() {

从前有座山,山上有座庙,庙里有个老和尚,一天老和尚对小和尚讲故事:story(),小和尚听了,找了块豆腐撞死了 // 非尾递归,下一个函数结束以后此函数还有后续,所以必须保存本身的环境以供处理返回值。

}

作者:匿名用户

链接:https://www.zhihu.com/question/20761771/answer/23254340

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考资料:https://www.cnblogs.com/catch/p/3495450.html

https://www.zhihu.com/question/20761771

相关文章

  • 递归和尾递归

    作者:匿名用户 链接:https://www.zhihu.com/question/20761771/answer...

  • 递归和尾递归

    递归(recursion) 递归指函数体中直接或间接调用自身的一种方法,递归的解决思路通常是把一个大问题转化为许多...

  • 递归和尾递归

    原文 递归原理 递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用 你可能想知道如何实现调用自身...

  • Kotlin语言(九):特性

    1、尾递归优化 尾递归:函数在调用自己之后没有再执行其他任何操作就是尾递归 尾递归优化的原理就是将递归转换成迭代,...

  • python学习

    1:尾递归 解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊...

  • 递归&尾递归

    调用栈的特点,先进后出, FILO, 场景还原。 递归 有栈溢出的可能 stack overflow 尾递归 编译...

  • C++ 递归算法

    递归算法,尾递归算法求阶乘!

  • 递归调用优化

    尾递归优化 函数调用自身,称为递归。如果尾调用自身,就称为尾递归。 递归非常耗费内存,因为需要同时保存成千上百个调...

  • 25.尾递归优化

    1.代码如下: 只有尾递归才能优化 1.需要将递归转化为尾递归2.加上关键字tailrec 2.尾递归的原理,看编...

  • 尾调用优化

    尾调用优化 尾递归 正常递归 尾递归 改写以上代码,使其只有一个参数: 总结一下,递归本质上是一种循环操作。纯粹的...

网友评论

      本文标题:递归和尾递归

      本文链接:https://www.haomeiwen.com/subject/aylqbftx.html