| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 549 人关注过本帖
标题:关于递归函数的问题,n个不懂
只看楼主 加入收藏
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
关于递归函数的问题,n个不懂
如在下面这个函数中,输入4,是怎么得出结果是4的?  (关于递归函数都不太明白,谢谢解答,感激不尽)
#include<stdio.h>
int number(int y)
{
    int num;
    if(y<4&&y>0)
        num=y;
    else num=number(y-1)+y-3;
    return num;
}
int main()
{
    int n,count;
    do
    {
        printf("YEAR: ");
        scanf("%d",&n);
        count=number(n);
        printf("%d\n",count);
    }while(n);
    return 0;  
}
搜索更多相关主题的帖子: 问题 return number count 
2012-04-21 14:13
liuhoukai
Rank: 1
等 级:新手上路
帖 子:23
专家分:7
注 册:2012-3-6
收藏
得分:1 
不知道程序想解决的问题,试一下下面的

int number(int y)

{

    int num;

    if(y<4&&y>0)

        return y;

    else num+=number(y-1)+y-3;

    return num;

}
2012-04-21 14:37
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 2楼 liuhoukai
程序没问题,就想知道是怎么样实现的,就比如说4吧。
2012-04-21 14:43
wandon8989
Rank: 2
等 级:论坛游民
帖 子:21
专家分:38
注 册:2012-3-15
收藏
得分:1 
if(y<4&&y>0)
        num=y;
    else num=number(y-1)+y-3;
能看懂这句吗?这就是为什么是4的原因
2012-04-21 15:25
ab1034982749
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:215
专家分:1185
注 册:2012-4-14
收藏
得分:18 
比如说4吧。
当你输入4后,调用number()函数,
此时y=4,然后到if()语句,因为y=4,所以不满足条件 ,进入else
num=number(y-1)+y-3;
对于这条语句,首先看一下y-3;
num=number(y-1)+1;
然后递归,进入
number(y-1)
因为这个里面的y=y-1=4-1=3;
所以满足if()条件语句,
num=y=3;
然后就执行返回语句
return num;
于是:number(y-1)=3;
然后回到了:num=number(y-3)+1;
所以num=4;
然后再返回,return num;
所以number(n)=4;
递归结束。
回到主函数
count=number(n)=4;
输出count.
这类问题需要慢慢体会,一步步分析,一个一个看,一步步往里推进,再注意递归结束的条件,只要条件一满足就开始了返回,然后再一步步看返回的值,直到递归结束。

得到count=number(n)
2012-04-21 15:35
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 5楼 ab1034982749
恩恩,明白了,谢谢哈。
2012-04-21 15:41
wandon8989
Rank: 2
等 级:论坛游民
帖 子:21
专家分:38
注 册:2012-3-15
收藏
得分:0 
怎么修改可以让程序输入几个数之后跳出来啊?
2012-04-21 16:15
nongzhaobo
Rank: 3Rank: 3
来 自:广西南宁
等 级:论坛游侠
帖 子:59
专家分:155
注 册:2012-4-8
收藏
得分:0 
关注一下.....
2012-04-21 17:55
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 5楼 ab1034982749
再请教一下,为什么输入0的时候,printf那句不会实现呢?不是先执行循环内部,再才判断n是否为0的吗?
2012-04-21 21:47
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
回复 7楼 wandon8989
麻烦你说详细点。
2012-04-21 21:47
快速回复:关于递归函数的问题,n个不懂
数据加载中...
 
   



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

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