首页编程语言非基于栈的编程语言

非基于栈的编程语言

cysgjjcysgjj时间2024-12-03 09:57:39分类编程语言浏览43
导读:C语言中的递归程序可以用非递归算法实现吗?C语言中的递归程序可以用非递归算法实现吗?递归就是自己调用自己。既然是自己调用自己,能完成这个操作的一般就是函数或者过程。函数在递归调用自己的时候,就好比剥洋葱皮一般,只要洋葱没有剥完,就调用自身继续剥下一层,每剥一层皮就看看是否剥完了,完事就结束(需要一次一次的返回到最开始剥洋葱皮那次才能最……...
  1. C语言中的递归程序可以用非递归算法实现吗?

C语言中的递归程序可以用非递归算法实现吗?

递归就是自己调用自己。

既然是自己调用自己,能完成这个操作的一般就是函数或者过程。

函数在递归调用自己的时候,就好比剥洋葱皮一般,只要洋葱没有剥完,就调用自身继续剥下一层,每剥一层皮就看看是否剥完了,完事就结束(需要一次一次的返回到最开始剥洋葱皮那次才能最终结束),没剥完就继续调用自身剥下一层…

非基于栈的编程语言
图片来源网络,侵删)

因为每调用一次自身,都需要进行一系列的“保护现场”、当前函数“退场”,新的函数“入场”等操作,并且等最终完成时还得按照相反顺序逐次(运行多少次得到结果就返回多少次)返回“同一个函数”的运算结果,一直到最初调用函数的时候,这才算完。

使用递归的一大优点就是思路流畅、代码简洁,不过代价也比较大,可以想象,使用递归时的时间、空间开销实在是伤不起。

递归算法用非递归算法解决,一般有如下方法

非基于栈的编程语言
(图片来源网络,侵删)

1、可以用循环结构的算法替代 ;

2、自己用堆栈模拟运行时栈,分析只保存必须保存的信息,从而用非递归算法替代递归算法。

非基于栈的编程语言
(图片来源网络,侵删)

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/23436.html

递归算法调用
智能教育互联网技术有哪些 宜宾c语言编程猫考题,c语言考试编程题库