c++关于递归与非递归
同样一个程序,什么时候用递归好,什么时候用非递归呀像Fibonacci斐波那契数列等这一类的程序,我发现当把一个数设定得比较大的时候,那非递归运算好像要快很多呀,是不是这...
同样一个程序,什么时候用递归好,什么时候用非递归呀
像Fibonacci斐波那契数列等这一类的程序,我发现当把一个数设定得比较大的时候,那非递归运算好像要快很多呀,是不是这样的啊
同一个程序,哪种运算速度快些? 展开
像Fibonacci斐波那契数列等这一类的程序,我发现当把一个数设定得比较大的时候,那非递归运算好像要快很多呀,是不是这样的啊
同一个程序,哪种运算速度快些? 展开
2个回答
展开全部
调用函数是要付出一定开销的,比如上下文的保存与恢复,会不断有堆栈操作。所以会慢。。
递归就是不断地调用函数,只不过调用的是自己。
一般来讲,同一个算法的非递归程序一定不慢于递归程序。
适用环境嘛……这个不能明确划分。。。不如这样说吧~
能不用递归的时候都不用递归,也就是有非递归算法的时候尽量避免递归。
什么时候用递归呢?我想有这样几个吧~
1.算法有比较简单的逻辑,比如阶乘,再比如遍历树
2.不用递归就解不开的问题(这个解不开是指要花费不少多余的力气才能解开)
3.你不想让别人看懂你写的程序
4.你想炫耀你高超的编程技术
递归就是不断地调用函数,只不过调用的是自己。
一般来讲,同一个算法的非递归程序一定不慢于递归程序。
适用环境嘛……这个不能明确划分。。。不如这样说吧~
能不用递归的时候都不用递归,也就是有非递归算法的时候尽量避免递归。
什么时候用递归呢?我想有这样几个吧~
1.算法有比较简单的逻辑,比如阶乘,再比如遍历树
2.不用递归就解不开的问题(这个解不开是指要花费不少多余的力气才能解开)
3.你不想让别人看懂你写的程序
4.你想炫耀你高超的编程技术
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询