精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-11
首先我要说一下,递归并不是一个广义上的算法,只是一种实现某种算法的手段和方法
其次,把递归和非递归各有利弊,前者耗内存,后者则时间较长,当然在小的程序上采用那种是无所谓的, 但是当程序很大时,就需要权衡使用两者 |
|
返回顶楼 | |
发表时间:2008-12-11
xjlsgcjdtc 写道 首先我要说一下,递归并不是一个广义上的算法,只是一种实现某种算法的手段和方法 其次,把递归和非递归各有利弊,前者耗内存,后者则时间较长,当然在小的程序上采用那种是无所谓的, 但是当程序很大时,就需要权衡使用两者 不好意思,不有及时回你。 我觉得递归和前序遍历说的不是一回事。 递归是一种思想。 前序遍历是一种访问方式。例如:树 |
|
返回顶楼 | |
发表时间:2008-12-11
xjlsgcjdtc 写道 首先我要说一下,递归并不是一个广义上的算法,只是一种实现某种算法的手段和方法 其次,把递归和非递归各有利弊,前者耗内存,后者则时间较长,当然在小的程序上采用那种是无所谓的, 但是当程序很大时,就需要权衡使用两者 算法即方法和手段,把方法和手段用在计算机语言里加以理论化系统化就出现了算法。 递归不依赖于任何语言,从这就可以看得出。 递归和非递归是各有得弊说的很对。 有此时候如果把递归改成非递归效率更高,但也不是所有的。 有性趣请看我的另外三篇:http://sunnymoon.iteye.com/category/46944 数据结构与算法(JAVA篇)之递归算法(二) 数据结构与算法(JAVA篇)之递归算法(三) 数据结构与算法(JAVA篇)之递归算法(四) |
|
返回顶楼 | |
发表时间:2008-12-12
Element & lina 写道 sunnymoon 写道 lifethinker 写道 sunnymoon 写道 /** * 总结: * 使用非递归的方式更简洁,更易懂,运行效率更高,为什么还要用递归的算法呢。 * 递归使规模逐渐降低的方式解决问题,以这种统一的方式解决足够复杂的问题。 */ 你的说法不对,大多数情况下,递归要比非递归的效率要高,仅对少数尾递归,它可以很容易的转换为非递归形式的情况下,非递归的效率才比较高。你试着将快速排序转换成非递归的形式(这可不是件容易的事),看看它们的效率的谁高? Hi, 你好。看得出来你是一个高手。 我想说的仅在本例子中的情况,并且试图说明在非递归比递归的效率高的情况下为什么还会使用到递归,另外以此引出一此程序设计的思想(问题规模转化),仅此而已。 你说的很对,我们以后再继续研究更复杂的情况吧。 Best regards, Br, SunnyMoon看来你经常写邮件,递归非递归who效率高这个问题没有context讨论起来有意义吗 请参考博客后继的几篇, 这篇只是初步的介绍。 |
|
返回顶楼 | |
发表时间:2008-12-12
递归是为了解决一些不能直接利用数学公式计算出来的一些特殊问题,比如汉诺塔问题,你是无法用数学表达式准确推算出第n项的表达式,只能运用递归的方法来解,当然有些可以用递归方法来解的用其他的方法也可以甚至会效率更高,只能说用递归能解决一些你用常规办法不能解决的问题这才是递归的真正用途。个人见解,要是不正确还望指出谢谢!!!!!!!!
|
|
返回顶楼 | |
发表时间:2008-12-12
lizhaosuper 写道 递归是为了解决一些不能直接利用数学公式计算出来的一些特殊问题,比如汉诺塔问题,你是无法用数学表达式准确推算出第n项的表达式,只能运用递归的方法来解,当然有些可以用递归方法来解的用其他的方法也可以甚至会效率更高,只能说用递归能解决一些你用常规办法不能解决的问题这才是递归的真正用途。个人见解,要是不正确还望指出谢谢!!!!!!!! 很同意你的观点。 递归的真正用意不是在于提高了运行效率,而是提高了解决问题简便性。 用递归的思想解决很复杂的问题时效果就会很明显。good! |
|
返回顶楼 | |