大家好,今天小编关注到一个比较有意思的话题,关于html页尾的问题,于是小编就整理了1个相关介绍html页尾的解答,让我们一起看看吧。
- 尾递归究竟是好是坏?
尾递归究竟是好是坏?
如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自动生成优化的代码。
当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活动记录而不是在栈中去创建一个新的。编译器可以做到这点,因为递归调用是当前活跃期内最后一条待执行的语句,于是当这个调用返回时栈帧中并没有其他事情可做,因此也就没有保存栈帧的必要了。通过覆盖当前的栈帧而不是在其之上重新添加一个,这样所使用的栈空间就大大缩减了,这使得实际的运行效率会变得更高。
div>
虽然晦涩难懂,不觉明厉啊!
无论什么递归,在实际工作都不建议使用。但是递归这种思想,在数据结构与算法相关的课程中还是很重要的,尤其是可以优化这个思想,解决一些迭代问题。
大多数人了解普通递归,都是在计算机相关专业经典本科书籍谭浩强的《C语言程序设计》中,但是求n!阶乘其实用递归是不明智的,因为除了速度慢,使用递归还无法预测计算过程中内存的使用情况,如果发生了OOM就会影响整个项目。
递归的百度百科解释是程序调用自身的编程技巧,也就是说在程序中调用了自己,如下图,可以看到在shi_er这个函数中,又调用shi_er自身,从而达到了十进制转换二进制的目的。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,构成递归需具备的条件:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
但是,如果没有满足上述条件,又轻易调用递归,就会有无限死循环的风险,这也是我么在实际工作中不推荐使用递归的的原因。
从上面的代码我们可以看到,普通递归是从初始状态开始计算,而尾递归是从最后开始计算,函数调用是出现在函数的尾部,直接让被调用的函数返回时越过调用者, 返回到调用者的调用者去。尾递归是极其重要的,因为用尾递归的话,可以避免对函数对堆栈和内存的无法估计的消耗,无须保存中间函数的堆栈。
再举一个用尾递归实现斐波那契数列的例子
int FibonacciTailRecursive(int n,int ret1,int ret2)
到此,以上就是小编对于html页尾的问题就介绍到这了,希望介绍关于html页尾的1点解答对大家有用。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。 转载请注明出处:http://www.rongung.com/post/17986.html
相关推荐
-
大家好,今天小编关注到一个比较有意思的话题,就是关于绝对值c语言的问题,于是小编就整理了4个相关介绍绝对值c语言的解答,让我们一起看看吧。c语言求一个数的绝对值用if?c语言中绝对值怎么表示?c语言中绝对值怎么表示?c语言绝对值函数?c...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于javascript随机答题的问题,于是小编就整理了3个相关介绍javascript随机答题的解答,让我们一起看看吧。1-1000随机数?随机数函数如何使用?HTML开发最好的工具,不用花...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于c语言for延时的问题,于是小编就整理了2个相关介绍c语言for延时的解答,让我们一起看看吧。C语言delay函数延时计算?C语言中delay函数如何运用?C语言delay函数延时计算?下...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于cc语言参考的问题,于是小编就整理了4个相关介绍cc语言参考的解答,让我们一起看看吧。c语言函数基本格式?谢谢,怎么用c语言写一个程序:用户输入数字,然后统计每个数字出现的次数?对...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于c语言函数的概念的问题,于是小编就整理了2个相关介绍c语言函数的概念的解答,让我们一起看看吧。c语言中的函数是由哪两部分组成?c语言中差函数是什么?c语言中的函数是由哪两部分组成?1、在C...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于c语言程序的调用的问题,于是小编就整理了3个相关介绍c语言程序的调用的解答,让我们一起看看吧。C语言程序如何调用python程序?c语言中如何调用函数?c语言怎么调用文件一部分的内容?C语...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于c语言的return的问题,于是小编就整理了2个相关介绍c语言的return的解答,让我们一起看看吧。C语言中return到底怎么用?完全搞不懂return1;return2;return...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于c语言ifreturn的问题,于是小编就整理了3个相关介绍c语言ifreturn的解答,让我们一起看看吧。C语言什么时候要return0?if中return的作用?C程序语言中re...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于return在c语言的问题,于是小编就整理了3个相关介绍return在c语言的解答,让我们一起看看吧。c语言return语句什么时候用?c++怎么输出return值?C语言中return的...
-
大家好,今天小编关注到一个比较有意思的话题,就是关于c语言return的问题,于是小编就整理了3个相关介绍c语言return的解答,让我们一起看看吧。C语言中return是啥意思?C语言中return怎么用,主函数中一定要用吗?c语言r...