有人能帮我解释一下什么是递归法吗?

如题所述

打个比方吧,递归法好比是一个军队要通过一个迷宫,到了第一个分岔口,有3条路,将军命令3个小队分别去探哪条路能到出口,3个小队沿着3条路分别前进,各自到达了路上的下一个分岔口,于是小队长再分派人手各自去探路——只要人手足够(对照而言,就是计算机的堆栈足够),最后必将有人找到出口,从这人开始只要层层上报直属领导,最后,将军将得到一条通路。所不同的是,计算机的递归法是把这个并行过程串行化了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-03-02
递归不是 算法,他是一种思想,正是因为某个算法的指导思想是递归的,所以才被称为递归
第2个回答  2006-03-02
用递归处理阶乘类问题很好用,如:
int f(int n)
{
n! = n*f(n-1);
}
这就是一个递归的应用,递归的思想是,以阶乘为例,把n!转换成n*(n-i)!,(n_1)!比n!好算,然后(n-1-1)!比(n-1)!好算,以次类推直至解决问题。
第3个回答  2006-03-02
递归就是把问题交还给问题本身。
比如常见的。 n!(阶乘) 就是一种递归。
第4个回答  2019-12-28
递归是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他算法设计方法之前先讨论它。
  能采用递归描述的算法通常有这样的特征:为求解规模为n的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模n=1时,能直接得解。
举例说明:
计算1+2+....+100的值
#include
<stdio.h>
main()
{
printf("%d\n",fun(100));//调用函数fun()
}
递归函数
fun(int
n)
{int
t;
if(n==0||n==1)
t=1;
//如果n为0或为1
输出1
//n大于0,则为第n项和第n-1项的和,继续调用fun()
//以此类推...
else
t=n+fun(n-1);
return
t;
}
相似回答