| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 856 人关注过本帖
标题:C语言简单函数递归调用问题
取消只看楼主 加入收藏
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
C语言简单函数递归调用问题
//共有5位同学,第一个同学的年龄是10,并且后边的同学依次比前面的同学大两岁,求第五个同学年龄,使用递归调用函数
//运行无结果
#include<stdio.h>
int main()
{   
    int k;
    int age(int x,int num);
    k=age(10,5);
    printf("%d\n",k);
    return 0;
}

int age(int x,int num)
{
    int y;
    y=x+2;
    num--;
    while(num>1)
        age(y,num);//这里我想在num大于1的时候,还把y的值传递给x,num值传递个num,问题是出现在这里吗?
    return y;
}
搜索更多相关主题的帖子: return C语言 
2014-05-05 11:08
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 2 楼 embed_xuel
谢谢回答!
如果没有while的话,是不是会无限次递归?
我看谭浩强的书,他是反推的思想,也就是给出第一个人的年龄,然后反推回来,感觉意思就是用第一个人的年龄限制递归次数
所以这里我是想用while限制递归次数,不知道我这想法对不对
2014-05-05 11:19
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 3 楼 top398
谢谢回答,能详细解释下否?
2014-05-05 11:25
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 5 楼 top398
根据你的提示,把程序改成

#include<stdio.h>
int main()
{   
    int k;
    int age(int x,int num);
    k=age(10,5);
    printf("%d\n",k);
    return 0;
}

int age(int x,int num)
{
    int y;
    y=x+2;
    num--;
        if(num>1)
        age(y,num);
        else
        return y;
}

就对了,谢谢
2014-05-05 11:26
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 5 楼 top398
那也就是说,其实我这里递归调用时,函数值的传递还是没有问题的
只是为什么只能用if结束,不能用while结束,我还不理解
2014-05-05 11:28
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 13 楼 assume2013
你好,你的程序结果是对的,但是以我现在的理解
int age(int x,int num)
{
   
    x=x+2;
    num--;
    while(num>1)
    return age(x,num);//不返回的话,永远是死循环!!!!!!!!!!!!!!!!!!!
     
}

num大于1的时候,程序执行return语句,又调用age,但是num等于1的时候,程序怎么还会执行return语句呢?

我debug看了程序的运行过程, 发现age程序return  18以后,x和num的值还会改变,没怎么看懂,能否解释一下程序运行过程呢?
谢谢!
2014-05-06 16:10
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 15 楼 wp231957
,不懂嘛,就这么写了,在大家提醒下,改了,嘿嘿
2014-05-06 16:46
快速回复:C语言简单函数递归调用问题
数据加载中...
 
   



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

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