非递归算法比较有哪些主要的优点和缺点

作者&投稿:虿都 (若有异议请与网页底部的电邮联系)
非递归算法比较有哪些主要的优点和缺点~

非递归算法和递归算法的主要优缺点:
非递归算法的优点:如果需要处理的数据规模比较大的时候,适合使用非递归算法。缺点:程序代码的可读性差一些。
递归算法的优点:程序代码的可读性要比非递归算法的好,如果需要处理的数据量比较小的时候,适合使用递归算法。缺点:当需要处理的数据规模比较大的时候,就不适合使用递归算法了。因为递归算法涉及到对堆栈的频繁操作(入栈、出栈),系统效率会很低,严重的时候会导致系统崩溃。

缠论之门:走势的递归和非递归结构对比,你看到差异了吗

非递归算法和递归算法的主要优缺点:

非递归算法的优点:如果需要处理的数据规模比较大的时候,适合使用非递归算法。缺点:程序代码的可读性差一些。
递归算法的优点:程序代码的可读性要比非递归算法的好,如果需要处理的数据量比较小的时候,适合使用递归算法。缺点:当需要处理的数据规模比较大的时候,就不适合使用递归算法了。因为递归算法涉及到对堆栈的频繁操作(入栈、出栈),系统效率会很低,严重的时候会导致系统崩溃。


递归法和递归算法的联系和区别是什么?
1、递推法:递推算法是一种根据递推关系进行问题求解的方法。通过已知条件,利用特定的递推关系可以得出中间推论,直至得到问题的最终结果。递推算法分为顺推法和逆推法两种。 2、递归法:在计算机编程中,一个函数在定义或说明中直接或间接调用自身的编程技巧称为递归。通常把一个大型复杂的问题...

递归算法有哪些优缺点?
递归算法包含的两个部分:1、由其自身定义的与原始问题类似的更小规模的子问题(只有数据规模不同),它使递归过程持续进行,称为一般条件。2、所描述问题的最简单的情况,它是一个能控制递归过程结束的条件,称为基本条件。(递归出口)递归的定义:如果一个对象部分地由它自身组成或按它自己定义,则...

递推算法递推与递归的比较
递推算法与递归算法在计算策略上有显著区别。递归算法通过函数内部调用自身,往往需要将数据放入堆栈中,随着函数调用逐步向边界值接近,如阶乘函数f(n) = n * f(n-1)在求f(3)时,其数据流动路径是冗长的:f(3) -> f(2) -> f(1) -> f(0) -> f(1) -> f(2) -> f(3)。相比之...

递推算法和递归算法有什么区别
2、递推算法免除了数据进出栈的过程 递推与递归的比较相对于递归算法,递推算法免除了数据进出栈的过程,也就是说,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值.比如阶乘函数:f(n)=n*f(n-1)在f(3)的运算过程中,递归的数据流动过程如下:f(3){f(i)=f(i-1)*i}-->f(...

递归算法和非递归算法在分析时间复杂度和空间复杂度上为什么不同_百度...
一、代入法 大整数乘法计算时间的递归方程为:T(n) = 4T(n\/2) + O(n),其中T(1) = O(1),我们猜测一个解T(n) = O(n2 ),根据符号O的定义,对n>n0,有T(n) < cn2 - eO(2n)(注意,这里减去O(2n),因其是低阶项,不会影响到n足够大时的渐近性),把这个解代入递归方程,...

编程中的递归算法有哪些优缺点?
递归算法的优点是代码更简洁清晰,可读性更好。但是,递归的话函数调用是有开销的,而且递归的次数受堆栈大小的限制。时间和空间消耗比较大。每一次函数调用都需要在内存栈中分配空间以保存参数,返回地址以及临时变量,而且往栈里面压入数据和弹出都需要时间。另外递归会有重复的计算。递归本质是把一个问题...

递归算法的优点
递归算法的优点是:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型...

《算法导论》三种解递归式的方法
并不存在通用的方法来猜测递归式的正确解,但总有一些试探法可以帮助做出好的猜测: 如果某个递归式与先前见过的类似,则可猜测该递归式有类似的解。如,递归式 看起来比较难解,因为右式 T 的自变量中加了 17,但我们可以猜测这个多出来的项对解的影响不大,因为当 n 很大时, 与 之间的差别并不大,两者都将 n...

怎样用算法描述1*2*3…*n的积?
实现1*2*3...*n的积,有以下两种常用方法:递归与迭代。递归方法简洁明了,直接调用自身求解,递归公式为:n! = n * (n-1)!,直至n等于1时停止递归。然而,递归方法可能引发栈溢出问题,特别是当n较大时。迭代方法则是从1逐个相乘至n,避免了递归可能的栈溢出问题。迭代公式为:result = 1,...

递推和递归算法有什么区别
递推就是从初始值推到最后一项,而递归就是倒过来计算!如用递归法求1~100的和时它就是从100+99+98+………1倒过来计算的 而递推就是从1+2+3………+100直接用循环递推计算的!完全就这么简单!Are you anderstand?还有人能从哲学的理论上来讲解,这个理论吗?期待更好的回答………...

岳阳县13674295788: 递归程序和非递归程序的优缺点是什么?
犹姚喜宁: 递归代码少,但占用资源.非递归与之相反~

岳阳县13674295788: 递归与非递归的比较(从代码量、执行效率两个角度)...
犹姚喜宁: 递归的代码量比非递归的代码量少,因为非递归需要额外的变量记录当前所处的位置信息,以及额外的控制语句.而递归所使用的方式是函数调用,这是非常自然的栈结构,不需要记录位置信息,不需要添加控制语句,这些工作都由函数调用的特性解决了. 递归的执行效率比非递归的执行效率低,因为递归的实质是函数调用,而函数调用必然要进行线程栈空间的分配,记录每一次函数调用前的状态等工作,开销是比较大的.而非递归则不需要进行这些工作.

岳阳县13674295788: 递归算法跟非递归算法的区别 -
犹姚喜宁: 递归算法是一种分而治之的方法,简单的说就是调用自己本身;能把复杂的问题化为简单来解决;但是执行的效率比较低,所以一般分析问题用递归,实际解决问题用非递归.

岳阳县13674295788: 非递归的二叉树前序遍历算法有什么用途 -
犹姚喜宁: 1. 递归和非递归只是解决问题的方法的不同,本质还是一样的. 2. 递归算法相对于非递归算法来说效率通常都会更低 2.1 递归算法会有更多的资源需要压栈和出栈操作(不仅仅是参数,还有函数地址等) 2.2 由于编译器对附加的一些栈保护机制会导致递归执行的更加低效 3. 使用循环代替递归算法,通常可以获得更好的执行效率和空间效率,在二叉树层次较深的情况下,采用非递归方式遍历能够有效的提升遍历的性能.

岳阳县13674295788: 程序的递归算法与非递归有什么区别? -
犹姚喜宁: 递归算法是一种直接或者间接地调用自身的算法.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解.递归就是在过程或函数里调用自身.在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口.递归算法解题通常显得很简洁,但递归算法解题的运行效率较低.所以一般不提倡用递归算法设计程序.在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储.递归次数过多容易造成栈溢出.

岳阳县13674295788: 数据结构题目,广度优先和深度优先 -
犹姚喜宁: (一)深度优先搜索的特点是:(1)从上面几个实例看出,可以用深度优先搜索的方法处理的题目是各种 各样的.有的搜索深度是已知和固定的,如例题2-4,2-5,2-6;有的是未知的,如例题2-7、例题2-8;有的搜索深度是有限制的,...

岳阳县13674295788: 二叉树先序遍历递归算法和非递归算法本质区别? -
犹姚喜宁: 在前面一文,说过二叉树的递归遍历算法(二叉树先根(先序)遍历的改进),此文主要讲二叉树的非递归算法,采用栈结构 总结先根遍历得到的非递归算法思想如下: 1)入栈,主要是先头结点入栈,然后visit此结点 2)while,循环遍历当前结...

岳阳县13674295788: 递归方式建立一棵二叉树和非递归方式建立一棵二叉树有什么区别啊? -
犹姚喜宁: 区别在于,递归的算法简单但效率不高,非递归的算法复杂些但效率高.动态输入树节点的值,是要求在程序运行的时候用户才从键盘输入要加入到树中的数据,程序根据用户输入的数据来创建节点插入到树中.跟它相对的是,有些程序在源代码里就已经固定好要加入树中的数据了.

岳阳县13674295788: 递归算法的低效性 -
犹姚喜宁: 先回答问题.内存方面,一般情况下递归的开销比非递归大;运行速度方面,一般情况下递归比非递归快;代码实现上,难度不一而论,要看具体问题上人脑解决和电脑解决的思路差异大小,一般而言,递归问题用非递归思路和普通问题用递归思路时代码实现都将复杂化;运行稳定性上,非递归明显占优;代码量,永远是递归最少;单论递归算法的低效性,一般指的是其内存开销太大.其他的特性与非递归比没有确定的结果,要试解决的问题而定.这里有一篇非常之精辟的短文,想要深入了解递归可以看下.http://hi.baidu.com/ninke/blog/item/e3e244a942b621fd1f17a25e.html

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网