c++关于递归与非递归

来源:百度知道 编辑:UC知道 时间:2024/08/25 20:43:03
同样一个程序,什么时候用递归好,什么时候用非递归呀
像Fibonacci斐波那契数列等这一类的程序,我发现当把一个数设定得比较大的时候,那非递归运算好像要快很多呀,是不是这样的啊
同一个程序,哪种运算速度快些?

调用函数是要付出一定开销的,比如上下文的保存与恢复,会不断有堆栈操作。所以会慢。。
递归就是不断地调用函数,只不过调用的是自己。
一般来讲,同一个算法的非递归程序一定不慢于递归程序。

适用环境嘛……这个不能明确划分。。。不如这样说吧~
能不用递归的时候都不用递归,也就是有非递归算法的时候尽量避免递归。

什么时候用递归呢?我想有这样几个吧~
1.算法有比较简单的逻辑,比如阶乘,再比如遍历树
2.不用递归就解不开的问题(这个解不开是指要花费不少多余的力气才能解开)
3.你不想让别人看懂你写的程序
4.你想炫耀你高超的编程技术

当写比较小的程序的时候 又可以用一般的语句表达的时候就不要用递归
但是用递归思路比较简单 用普通算法太过于复杂的时候就用 递归 没有明确的 规定 看情况 比较 复杂度和运算时间