迭代与递归其实有相似之处,以从累加为例。
迭代:重复执行相同步骤多少次(已知次数)以后停止
int sum(int n){
if(n>1){
for(i=1;i<n;i++)
{
n=n+i;
}
}else{
return 1;
}
}
递归:重复嵌套执行自身(未知次数)直到符合条件以后停止,并将结果层层返回处理输出最终结果
int sum(int n){
if(n>1){
return sum(n-1)+n;
}else{
return 1;
}
}
举一个不恰当的例子,金丝猴属于动物界脊椎动物门哺乳纲灵长目猴科仰鼻猴属,要是你上过初中背过界门纲目科属种,你会这么干,直接百度“金丝猴是什么界?”、“金丝猴是什么门?”。。。直到查到种为止,然后按空格填进去。
那么当你没有上过这个课,你就会这么查,先百度“金丝猴”,他会告诉你它属于仰鼻猴属,你就会想仰鼻猴属又是什么鬼,然后你又百度,他会告诉你仰鼻猴属属于长目猴科,然后你又百度。。。直到百度到“脊椎动物门属于动物界”为止。
所以当你掌控了一切的时候,你可以使用迭代,按名单把结果从头到尾串起来;当你只知道基本逻辑时,你只能一级一级往上查询,直到查到最后,然后最后再把结果从尾到头串起来。