| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 820 人关注过本帖
标题:这个结果是怎么算的?等于13。麻烦知道的详解一下,非常感谢。
只看楼主 加入收藏
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
这个结果是怎么算的?等于13。麻烦知道的详解一下,非常感谢。
#include<stdio.h>
int fun(int n,int*s)
{
    int f1,f2;
    if(n==0||n==1)
       *s=1;
    else
     {
        fun(n-1,&f1);
        fun(n-2,&f2);
        *s=f1+f2;
       }
}
void main()
{
     int x;
     fun(6,&x);
     printf("\n%d",x);
}
这个结果是怎么算的?等于13。麻烦知道的详解一下,(非常感谢。 下午发的那个少了一句,抱歉!)
搜索更多相关主题的帖子: 感谢 结果 详解 麻烦 
2010-09-16 18:48
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:4 
1 1 2 3 5 8 13
2010-09-16 19:00
songtosong
Rank: 2
来 自:仙女座星云&pound;&micro;伴星
等 级:论坛游民
帖 子:25
专家分:52
注 册:2010-8-29
收藏
得分:0 
kkk
2010-09-16 21:39
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:4 
你这个FUN函数不是定义了是整形?  怎么没有返回值?
还有这个是个递归的问题 你在编辑软件那里设个断点然后一步一步调试。就可以明白了

[ 本帖最后由 清风拂晓 于 2010-9-16 21:49 编辑 ]

清风拂暮(木)
2010-09-16 21:47
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:7 
{
        fun(n-1,&f1);
        fun(n-2,&f2);
        *s=f1+f2;
       }
这是个递归函数 ,不断用n代入fun(n-1,&f1);fun(n-2,&f2);...................直到if()为真为止,然后再计算回来




网上找的

待解决问题收藏 转载到QQ资料卡 c语言递归函数,调用过程?
[ 标签:c语言,递归函数,过程 ] #include"stdio.h"
int fun(int n,int*s)
{
 int f1,f2;
 if(n==0||n==1)
  *s=1;
 else
 {
  fun(n-1,&f1);
  fun(n-2,&f2);
  s%d",*s=f1+f2;
 }
 return *s;
}
void main()
{
 int x;
 fun(6,&x);
 printf("\n%d",x);
}

就是这题,有两个调用,请我大虾们,他们是怎么调用的
 转问给好友 ╯jmy╰ 回答:1 人气:1 提问时间:2010-09-16 21:51
答案
先是把6传给n,s指向x即*s=x;显然执行else,又因fun()n-1不是1或0,所以并不改变f1的值,同理f2值也不变,s%d“,这个我真不知道是什么意思,麻烦看看是不是打字错了,最后令*s即x=f1+f2;输出x,由于f1与f2值不可知,所以x值也不可知,递归时,有两个分支,但他们要依次调用,即像一个二叉树一样展开



[ 本帖最后由 A13433758072 于 2010-9-16 22:53 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-09-16 22:41
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
收藏
得分:0 
是应该返回个值,我调式过,看了几遍,没看懂
2010-09-16 22:52
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
没有return能返回?太神奇了吧
2010-09-16 23:10
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
LZ肯定是少了retutn *s;2楼的已给出答案,当n=7时,x=8+13=21
2010-09-16 23:24
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
int fun(int n,int*s) 不用return 肯定通不过编辑,除非你用void fun(int n,int*s)
2010-09-17 13:25
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:3 
有返回值肯定要有对应的返回语句
2010-09-17 13:27
快速回复:这个结果是怎么算的?等于13。麻烦知道的详解一下,非常感谢。
数据加载中...
 
   



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

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