分清递归和迭代

来源:互联网 发布:php 整数转字符串 编辑:程序博客网 时间:2024/06/06 14:11

很多学习算法编程的朋友虽然对着两个词并不陌生,但是一看到要选择这两个词时容易把其搞混,下面来尝试分析下着两个词的区别之处:

首先是递归:递归是一种算法,一种思想,有些算法代码如果用非递归的方法去写或许很复杂,但是用递归的方法或许只要一两行代码,递归固然有它的好处,那什么是递归呢?递归的通俗定义就是程序自身调用自身,这种由自身调用自身的思想大多体现在函数上:例如在一个函数本身的代码上再调用函数本身,当还是不满足边界条件时,那么继续做递归,直到满足递归条件,才开始回退到上一层递归开始处,学过“栈”的朋友应该直到栈是后进先出的,递归用到了栈这种后进先出的结构,最后的出去才能让前面压入栈的数据出去,但是递归也带来很多问题:例如子问题重叠、数据量过大到导致的时间开销和空间开销过大溢出等等,所以在一般的软件开发并不提倡用递归的思想去解决问题。

其次是迭代:其实迭代是很好理解的,对于一个可以用迭代处理的大问题,分成可以分步进行若干步,当前面一个小问题的值确定后代入迭代式可以算出另一个较大问题的值,继而可以再次代入迭代式算出更大问题的值,以此类推,直到最终的问题解决

例如迭代式:(b=0;a=b+1;b=a;)如果进行N次迭代,a的值显而易见。


通过比较发现:递归思想其实是从整体寻找到部分再到整体-》问题解决;

而迭代则是从部分一步一步走到整体-》问题解决。

0 0
原创粉丝点击