| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 424 人关注过本帖
标题:有关递归调用,大家帮忙看看程序哪里错了
只看楼主 加入收藏
peace1221
Rank: 2
等 级:论坛游民
帖 子:32
专家分:35
注 册:2010-7-9
结帖率:57.14%
收藏
已结贴  问题点数:10 回复次数:3 
有关递归调用,大家帮忙看看程序哪里错了
#include <stdio.h>
#include<math.h>
double f(int n);
int main(void)
{
    int n;
    double y;
    printf("please enter n:");
    scanf("%d",&n);
    y=f(n);
    printf("the answer is %f\n",y);

    return 0;
}

double f(int n)
{
    double result;
    if (n==1)
    result=28;
    else
    result=f(n-1)-1/100*sqrt(783);

    return result;

}
我运行的结果都是28,谁能告诉我为什么啊?
搜索更多相关主题的帖子: 递归 
2010-07-15 15:29
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:10 
因为 if else 其实就是一个语句
当n==1的时候 就在if那里出来了 if里result=? 就输出? 到这个时候 else只是个 坛中龟 在里面怎么爬 都跟坛外无关
期待楼主回音

你不要谢我 我该帮你把那龟放出来 现在追悔莫及 如果上天再给我一次机会 我会写上 1.0
此次作为我的教训贴


[ 本帖最后由 do8do8do8 于 2010-7-16 09:03 编辑 ]

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2010-07-15 16:00
peace1221
Rank: 2
等 级:论坛游民
帖 子:32
专家分:35
注 册:2010-7-9
收藏
得分:0 
我已经找到问题所在了,因为result=f(n-1)-1/100*sqrt(783)中1和100都为整型,故1/100运行结果是0,所以最后的运行结果才会都是28。因此只要把1/100改成1./100就可以了。不过还是要谢谢你!
2010-07-15 16:09
andyzt406
Rank: 2
等 级:论坛游民
帖 子:43
专家分:37
注 册:2009-11-24
收藏
得分:0 
1/100*sqrt(783)的结果为0,等于每次递归都减去0,结果等于f(1),为28。
2010-07-15 16:24
快速回复:有关递归调用,大家帮忙看看程序哪里错了
数据加载中...
 
   



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

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