递归和迭代

1、知乎回答摘录

图解

递归是一个树结构,每个分支都探究到最远,发现无法继续的时候往回走,
每个节点只会访问一次。
迭代是一个环结构,每次迭代都是一个圈,不会拉掉其中的某一步,然后不断循环,
每个节点都会被循环访问。


给迭代举个通俗点的例子:假如你有一条哈士奇和一条中华田园犬,怎么让它们串出比较纯正的哈士奇呢?先让哈士奇与中华田园犬配对,生下小狗。再让哈士奇与小狗配对,当然要等小狗长大后。就这样一直让哈士奇与新生的小狗配对,一代一代地迭,最终你能得到比较纯正的哈士奇。
递归,简讲就是自己调用自己,自己包含自己。
用程序表述就是:void f(int n){f(n - 1);}不要在意这是死循环代码,只需知道这个函数中,又调用了函数自身,属于自己调用自己。


//迭代:
int func(n)
{
  int s=1;
  for(int i=1;i<=n;i++)
  {
    s*=i;
  }
  return s;
}
//递归:
int func(n)
{
  int s=1;
  if(n>1)
  {
    s=n*func(n-1);
  }
}
//递归:(递推到回归)不停调用自己,是迭代的特例,时间复杂度低,耗费空间。
//迭代:A不停调用B。

摘自:https://www.zhihu.com/question/20278387


小规模汉诺塔问题

摘自:http://chenqx.github.io/2014/09/29/Algorithm-Recursive-Programming/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一 递归 递归的基本概念: 程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自...
    道阻且长_行则将至阅读 949评论 1 5
  • 递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己。 使用递归要注意的有两点:递归就是在过程或函数...
    wyude阅读 1,016评论 0 0
  • 简单点说说递归和迭代 递归的基本概念 一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题...
    ImTudou阅读 569评论 0 0
  • 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大奖:点击这里领取 在...
    HetfieldJoe阅读 1,825评论 0 14
  • 以前对于气虚的理解,仅仅停留在:脏腑功能即脏腑之气,脏腑功能下降即是气虚。 以至于分析病案时,总觉得一些症状产生的...
    你的样子_7af8阅读 229评论 0 0