
调用过程就是自己调用自己,直到满足退出条件,这个很重要
比如要求5的阶乘,先要求4的阶乘,接着求3的阶乘,。。。最后当n=1时,直接return 1
也就结束了递归。其实很好理解的。。
标个记号准备上传对大神的源码分析。好了,我分析了上楼大神的代码实现,具体参考他的代码,分享下。注:可以看看《算法精解》Kyle Loudon著 或者《数据结构》 主编 安训国 他们说的堆栈原理。
#include <stdioh>
char dg(char instr, char outstr, char outstr2)
{
if (instr == 0)
{
outstr = 0;
return outstr2;
}
(outstr + 1) = instr;
outstr = dg(instr + 1, outstr + 2, outstr2);
/ 下两句一直不执行,直到outstr = dg(instr + 5, outstr + 10, outstr2)返回后才执行,其后不断执行后三句!/
outstr = instr - 32;
return outstr + 2;
}
int main()
{
char buf[50];
dg("aybdx", buf, buf);
puts(buf);
return 0;
}
#include<stdioh>
int fibol(int n)
{
if(n==0) return 0;
if(n==1) return 1;
return fibol(n-1)+fibol(n-2);
}
void main()
{
int n,result;
printf("请输入第n个fibol的位置:n=");
scanf("%d",&n);
result=fibol(n);
printf("第%d个fibol数为%d\n",n,result);
}
#include <stdioh>
#include <mathh>
void fun2(int m)
{
int k=0,a[10];
for(int i=2;i<m;i++)
if(m%i==0)
a[k++]=i;
for(int i=0;i<k;i++)
{
printf("%d",a[i]);
if(i!=k-1)
printf(",");
}
}
void fun1(int m)
{
if(m<2)
printf("%d is a prime number",m);
for(int i=2;ii<=m;i++)
if(m%i==0)
fun2(m);
else
printf("%d is a prime number",m);
}
int main( )
{ int n;
scanf("%d",&n);
fun1(n);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)