| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:求助,函数问题!
只看楼主 加入收藏
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
收藏
 问题点数:0 回复次数:5 
求助,函数问题!
师傅们好: 谁能告诉我下面的程序为什么输出结果是2,1,1
#include<stdio.h>
int decrement(int i);
int main(void)
{
int i=2;
i=decrement(i);
printf("%d\n",i);
return 0;
}
int decrement(int i)
{
printf("%d\n",i);
i--;
if(i>0)
decrement(i);
return i;
}
谢谢
搜索更多相关主题的帖子: 函数 
2006-03-14 18:13
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
#include<stdio.h>
int decrement(int i);
int main(void)
{
int i=2;
i=decrement(i);
printf("%d\n",i);
return 0;
}
int decrement(int i)
{
printf("%d\n",i);
i--;
if(i>0)
decrement(i);
return i;
}
应当是2,1,1因为主函数中有一句i=decrement(i);
在主函数调用decrement时,参数i=2;
当decrement第一次被调时,它的值i--就成了1。在递归(递归中显示1)后,它的值还是1返回到主函数。当然主函数显示1

2006-03-14 19:09
giant
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-11
收藏
得分:0 
以下是引用梦想中国在2006-3-14 18:13:00的发言:
师傅们好: 谁能告诉我下面的程序为什么输出结果是2,1,1
#include<stdio.h>
int decrement(int i);
int main(void)
{
int i=2;
i=decrement(i);
printf("%d\n",i);
return 0;
}
int decrement(int i)
{
printf("%d\n",i);
i--;
if(i>0)
decrement(i);//注意你这里不等同于:return decrement(I),如果加了return 结果就是2,1,0
return i;
}
谢谢

2006-03-14 22:08
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
不明白楼上的意思
我觉得
如果变成return decrement(i),那么最后一次递归时,它没有运行到return decrement(i)这一句。
那么返回值就有点意思
不知道我的理解是否有误!!高手指教

2006-03-14 22:27
sunnvya
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1094
专家分:0
注 册:2005-11-23
收藏
得分:0 

寝室停电了

http://www. 第二站>>>提供源码下载
2006-03-14 22:32
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用梦想中国在2006-3-14 18:13:00的发言:
师傅们好: 谁能告诉我下面的程序为什么输出结果是2,1,1
#include<stdio.h>
int decrement(int i);
int main(void)
{
int i=2;
i=decrement(i);
printf("%d\n",i);
return 0;
}
int decrement(int i)
{
printf("%d\n",i); /* 输出第一个2*/
i--;
if(i>0)
decrement(i); /* 传递的是i,而不是&i,注意,执行完decrement(); 其中要输出 1,又回到此函数中,i并未变化*/
return i; /*返回1*/
}
谢谢


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-14 22:45
快速回复:求助,函数问题!
数据加载中...
 
   



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

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