非基于栈的编程语言
C语言中的递归程序可以用非递归算法实现吗?
函数在递归调用自己的时候,就好比剥洋葱皮一般,只要洋葱没有剥完,就调用自身继续剥下一层,每剥一层皮就看看是否剥完了,完事就结束(需要一次一次的返回到最开始剥洋葱皮那次才能最终结束),没剥完就继续调用自身剥下一层…
因为每调用一次自身,都需要进行一系列的“保护现场”、当前函数“退场”,新的函数“入场”等操作,并且等最终完成时还得按照相反顺序逐次(运行多少次得到结果就返回多少次)返回“同一个函数”的运算结果,一直到最初调用函数的时候,这才算完。
使用递归的一大优点就是思路流畅、代码简洁,不过代价也比较大,可以想象,使用递归时的时间、空间开销实在是伤不起。
递归算法用非递归算法解决,一般有如下方法:
2、自己用堆栈模拟运行时栈,分析只保存必须保存的信息,从而用非递归算法替代递归算法。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/23436.html