| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 584 人关注过本帖
标题:[求助]为什么结果是8?
只看楼主 加入收藏
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
 问题点数:0 回复次数:8 
[求助]为什么结果是8?

为什么结果是8啊?
麻烦讲解一下.

#include <stdio.h>
void main()
{
void fun(int k,int *p);
int x;
fun(6,&x);
printf("%d\n",x);
}

void fun(int k,int *p)
{
int a,b;
if(k==1||k==2)
*p=1;
else
{
fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}

搜索更多相关主题的帖子: 结果 
2007-09-09 23:42
万兽无缰
Rank: 1
等 级:新手上路
威 望:1
帖 子:296
专家分:0
注 册:2007-8-27
收藏
得分:0 

楼主单步运行看看,貌似最后应该A=5,B=3,相加为8


女朋友问我想怎么死~~~
             我说我想"爽死"
2007-09-10 09:32
chen7806
Rank: 1
等 级:新手上路
威 望:2
帖 子:160
专家分:0
注 册:2007-8-5
收藏
得分:0 
fun(k-1,&a);//这句执行K=6-1=5;
fun(k-2,&b);//这句执行K=5-2=3;

主要是K值函数的返回值变化所致。
2007-09-10 10:01
c_er
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-9-8
收藏
得分:0 
啊,,要是 人脑去 调试的话..头都大了...

楼主可以,用VC 6.0 单步调试一下...

一件小事做久了, 就是一件很伟大的事情.
2007-09-10 10:03
asd1zxc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-9-10
收藏
得分:0 

#include <stdio.h>
void main()
{
void fun(int k,int *p);
int x;
fun(6,&x);
printf("%d\n",x);
}

void fun(int k,int *p)
{
int a,b;
if(k==1||k==2)
*p=1;// 应该是 *p=k;
else
{
fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}

2007-09-10 10:47
tdcr5
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-26
收藏
得分:0 
lz你的代码意思是
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) (n>=3)


这样递推下去
f(3)=f(1)+f(2)=2
f(4)=f(3)+f(2)=3
f(5)=f(4)+f(3)=5
f(6)=f(5)+f(4)=8!!->答案
2007-09-10 10:59
virusswb
Rank: 1
等 级:新手上路
威 望:1
帖 子:342
专家分:0
注 册:2005-8-6
收藏
得分:0 
这样的问题你可以先用VC6调试一下就知道了,然后再来问啊

jorden008@
2007-09-10 16:46
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
人脑调试有点晕```


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-09-10 18:27
万兽无缰
Rank: 1
等 级:新手上路
威 望:1
帖 子:296
专家分:0
注 册:2007-8-27
收藏
得分:0 
LS太丑了,强烈抗议

女朋友问我想怎么死~~~
             我说我想"爽死"
2007-09-11 08:19
快速回复:[求助]为什么结果是8?
数据加载中...
 
   



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

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