|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求解答做题中的疑惑!!!!!!!
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
304
人关注过本帖
标题:
求解答做题中的疑惑!!!!!!!
只看楼主
加入收藏
戈壁滩
等 级:
新手上路
帖 子:7
专家分:0
注 册:2012-3-6
结帖率:
33.33%
楼主
收藏
已结贴
√
问题点数:5 回复次数:5
求解答做题中的疑惑!!!!!!!
有下列程序:
#include
void fun(int n,int *p)
{int f1,f2;
if(n==1||n==2)*p=1;
else
{fun(n-1,&f1);fun(n-2,&f2);
*p=f1+f2;
}
}
main()
{int s;
fun(3,&s);printf("%d\n",s);
}
最后的结果为2;
但是为什么两个1要相加得到结果?
2012-03-06 10:54
举报帖子
使用道具
赠送鲜花
share32
等 级:
黑侠
帖 子:214
专家分:663
注 册:2011-12-1
第
2
楼
收藏
得分:5
这个一个递归函数
fun(3,&s);执行的时候
因为n!=1,n!=2,所以执行fun(n-1,&f1);
因为n-1==2,所以f1=1;
然后函数接着执行fun(n-2,&f2);
因为n-2==1
所以f2=1;
然后执行*p=f1+f2=2;
回到主函数,显示2
另外#include 后面应该有
<stdio.h>
2012-03-06 11:08
举报帖子
使用道具
赠送鲜花
戈壁滩
等 级:
新手上路
帖 子:7
专家分:0
注 册:2012-3-6
第
3
楼
收藏
得分:0
回复 2楼 share32
那为什么*p=1的两个值要分别赋值给f1,f2?
2012-03-06 11:18
举报帖子
使用道具
赠送鲜花
share32
等 级:
黑侠
帖 子:214
专家分:663
注 册:2011-12-1
第
4
楼
收藏
得分:0
回复 3楼 戈壁滩
执行fun(n-1,&f1);
执行fun(n-1,&f2);
的时候
&f1\&f2是实参,p是它们对应的形参.
所以&f1=p
*p=1,导致 f1=1
f2同样的道理.
2012-03-06 11:54
举报帖子
使用道具
赠送鲜花
戈壁滩
等 级:
新手上路
帖 子:7
专家分:0
注 册:2012-3-6
第
5
楼
收藏
得分:0
回复 4楼 share32
哦,有点懂了,谢谢!
2012-03-06 13:00
举报帖子
使用道具
赠送鲜花
戈壁滩
等 级:
新手上路
帖 子:7
专家分:0
注 册:2012-3-6
第
6
楼
收藏
得分:0
回复 2楼 share32
结账第一种没成功,只有用平均结账了
2012-03-06 13:02
举报帖子
使用道具
赠送鲜花
6
1/1页
1
快速回复:
求解答做题中的疑惑!!!!!!!
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.016767 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved