×

递归法 递归

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

admin admin 发表于2022-05-07 00:43:36 浏览110 评论0

抢沙发发表评论

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

打个比方吧,递归法好比是一个军队要通过一个迷宫,到了第一个分岔口,有3条路,将军命令3个小队分别去探哪条路能到出口,3个小队沿着3条路分别前进,各自到达了路上的下一个分岔口,于是小队长再分派人手各自去探路——只要人手足够(对照而言,就是计算机的堆栈足够),最后必将有人找到出口,从这人开始只要层层上报直属领导,最后,将军将得到一条通路。所不同的是,计算机的递归法是把这个并行过程串行化了。

c语言递归算法

用递归法计算n!用递归法计算n!可用下述公式表示: n!=1 (n=0,1) n×(n-1)! (n》1)按公式可编程如下:long ff(int n){ long f; if(n《0) printf(“n《0,input error“); else if(n==0||n==1) f=1; else f=ff(n-1)*n; return(f);}main(){ int n; long y; printf(“\ninput a inteager number:\n“); scanf(“%d“,&n); y=ff(n); printf(“%d!=%ld“,n,y);} 程序中给出的函数ff是一个递归函数。主函数调用ff 后即进入函数ff执行,如果n《0,n==0或n=1时都将结束函数的执行,否则就递归调用ff函数自身。由于每次递归调用的实参为n-1,即把n-1的值赋予形参n,最后当n-1的值为1时再作递归调用,形参n的值也为1,将使递归终止。然后可逐层退回。下面我们再举例说明该过程。设执行本程序时输入为5,即求5!。在主函数中的调用语句即为y=ff(5),进入ff函数后,由于n=5,不等于0或1,故应执行f=ff(n-1)*n,即f=ff(5-1)*5。该语句对ff作递归调用即ff(4)。进行四次递归调用后,ff函数形参取得的值变为1,故不再继续递归调用而开始逐层返回主调函数。ff(1)的函数返回值为1,ff(2)的返回值为1*2=2,ff(3)的返回值为2*3=6,ff(4)的返回值为6*4=24,最后返回值ff(5)为24*5=120。

一个PHP的递归函数如何理解

首先明白递归是栈结构存储,即先进后出, 来看你这个列子,hello字符串进入substr函数首先得到ello不满足跳出递归条件继续递归,直到最后字符串o满足条件跳出递归,于是执行echo,将o先输出接着将lo第一位输出,接着将llo第一位.....我是这么理解的不知道帮到你了么