| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖
标题:此函数为什么不执行?
只看楼主 加入收藏
明天不一样
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-8-31
收藏
 问题点数:0 回复次数:6 
此函数为什么不执行?

我编写了这样一个函数,可是不能执行,不知哪里出了错误,麻烦看一看:
void a(int n,int m)
{
n--;
m++;
if(n=0)return;
a(n,m);
printf("递归函数:%d",m);
}

main()
{
int n=10;
int m=0;
a(n,m);
printf("主函数:%d",m);
getch();
}
程序不能执行,可是如果变为这样同样不能执行,
int a(int *n,int *m)
{
*n=(*n)-1;
*m=(*m)+1;
if(*n=0)return;
a(n,m);
printf("递归函数:%d",*m);
}

main()
{
int n=10;
int m=0;
a(&n,&m);
printf("主函数:%d",m);
getch();
}

[此贴子已经被作者于2006-9-23 9:46:12编辑过]

搜索更多相关主题的帖子: 函数 
2006-09-23 09:32
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用明天不一样在2006-9-23 9:32:39的发言:

我编写了这样一个函数,可是不能执行,不知哪里出了错误,麻烦看一看:
void a(int n,int m)
{
n--;
m++;
if(n==0)return;
a(n,m);
printf("递归函数:%d\n",m);
}

main()
{
int n=10;
int m=0;
a(n,m);
printf("主函数:%d",m);
getch();
}
程序不能执行,可是如果变为这样同样不能执行,
int a(int *n,int *m)
{
*n=(*n)-1;
*m=(*m)+1;
if(*n=0)return;
a(n,m);
printf("递归函数:%d",*m);
}

main()
{
int n=10;
int m=0;
a(&n,&m);
printf("主函数:%d",m);
getch();
}



倚天照海花无数,流水高山心自知。
2006-09-23 10:07
isoliyang
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-9-23
收藏
得分:0 
可以执行的
2006-09-23 10:10
明天不一样
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-8-31
收藏
得分:0 

感谢2楼nuciewth的精彩回答,新手总是忘记最重要的,谢谢你!


可怜可怜我吧!小弟知识贫乏,快要饿死了,大哥大姐你们行行好,给点编程知识吧!我会永远记住你们的恩情。
2006-09-23 10:19
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 

void a(int n,int m)
{
n--;
m++;
if(n==0)return;/*赋值符号“=”和判断语句“==”是不同的*/
a(n,m);
printf("递归函数:%d",m);
}

main()
{
int n=10;
int m=0;
a(n,m);
printf("主函数:%d",m);
getch();
}


我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2006-09-23 16:44
zhufeifei
Rank: 1
等 级:新手上路
威 望:2
帖 子:402
专家分:0
注 册:2006-8-11
收藏
得分:0 

我是位新手,我想问一下:不是说在调用函数时在被调函数内对形参值的改变不会改变实参的值吗?


在不断的拼搏与进取中,定能创造一片天地!
2006-09-23 23:14
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
以下是引用zhufeifei在2006-9-23 23:14:12的发言:

我是位新手,我想问一下:不是说在调用函数时在被调函数内对形参值的改变不会改变实参的值吗?

内存开辟的单元不同
因为printf是在递归函数中实现的,递归函数中的m和n作用范围是递归函数中 所以值会变化
而如果printf在main()中输出m,n的值还是0和0


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-09-24 10:24
快速回复:此函数为什么不执行?
数据加载中...
 
   



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

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