| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 970 人关注过本帖
标题:C语言递归求高手解释下,谢谢,急啊
只看楼主 加入收藏
ly3255148
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-8-31
收藏
 问题点数:0 回复次数:4 
C语言递归求高手解释下,谢谢,急啊
#include
int age (int n)
{
    int c;
    if (n==1)
        c=10;
    else
        c=age (n-1)+2;
    return c;          //主要这段的递推不解啊
}
int main ()
{
    printf ("%d\n",age(5));
    return 0;
}
里面的递归调用直到c=10,我明白,就是return c返回到主调函数age(n-1)即c=10+2=12,然后又没什么限制return c又返回到 age(n-1)得到14 为什么最后又返回到主函数,这里面可没有判断语句啊,就是递推的过程,最后n怎么又自增到5而且不再自增。。。,不解啊。
搜索更多相关主题的帖子: include return C语言 而且 
2016-02-17 21:19
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
以5为例,递归函数拆开你就看懂了:
int age1 (int n)
{
    int c;
    if (n==1)
        c=10;  //此时n=1,c=10
    else
        c=age1 (n-1)+2;  //这句不会再执行了
    return c;  // 返回10到age2      
}
int age2 (int n)
{
    int c;
    if (n==1)
        c=10;
    else
        c=age1 (n-1)+2;  //n=2,调用age3(2-1)
    return c;    //返回12到age3      
}
int age3 (int n)
{
    int c;
    if (n==1)
        c=10;
    else
        c=age2 (n-1)+2;  //n=3,调用age3(3-1)

    return c;  //返回14到age4        
}
int age4 (int n)
{
    int c;
    if (n==1)
        c=10;
    else
        c=age3 (n-1)+2;  //n=4,调用age3(4-1)
    return c;     //返回16到age5     
}

int age5 (int n)
{
    int c;
    if (n==1)
        c=10;
    else
        c=age4 (n-1)+2;  //n=5,调用age4(5-1)
    return c;    //返回18到主函数main      
}
int main ()
{
    printf ("%d\n",age5(5));  //输出最终结果18
    return 0;
}

能编个毛线衣吗?
2016-02-17 21:57
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
程序代码:
//递归的过程如下:
age(5)=age(4)+2;
age(4)=age(3)+2;
age(3)=age(2)+2;
age(2)=age(1)+2;
age(1)=10;
//age(5)=10+2+2+2+2;
//age递归完成后没有可以执行的代码自然返回啦。


[此贴子已经被作者于2016-2-17 22:07编辑过]


   唯实惟新 至诚致志
2016-02-17 22:02
ly3255148
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-8-31
收藏
得分:0 
回复 2楼 wmf2014
大神,谢谢,有疑问?但是拆开的程序确实简单,但是我喜欢抽象的过程的理解,就是return c=10是不是返回到c=age(n-1)+2中的age(n-1)这里,  一般return返回到主调函数中,现在age(n-1)结束调用,所以return返回到这个函数是吗,先一步一步来。。。
2016-02-17 22:18
杭01
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
威 望:1
帖 子:29
专家分:132
注 册:2016-2-11
收藏
得分:0 
回复 4楼 ly3255148
和数学里的递归一样,别想复杂了。
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-2-18 17:15编辑过]


准备中考中,有事请Email :)

Email: huihan9 AT qq DOT com
QQ: 2672286148
cnblogs: jt2001
2016-02-18 17:14
快速回复:C语言递归求高手解释下,谢谢,急啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017062 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved