c语言中递归函数

c语言中递归函数,第1张

调用过程就是自己调用自己,直到满足退出条件,这个很重要

比如要求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;

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12153104.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存