| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3280 人关注过本帖
标题:函数返回值类型怎么确定?
只看楼主 加入收藏
soler_z
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:28
专家分:130
注 册:2009-7-17
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
函数返回值类型怎么确定?
先看例子吧。1+2+4+8+……+2^63
用循环调用函数的时候,不知道怎么设置返回值类型。居然没有输出结果。。。
程序代码:
#include <stdio.h>
double f(int n);

main()
{
    double sum;
    int n=63;
    sum=f(n);
    printf("%e",sum);
    getch();
}

double f(int n)
{
    double result;
    int i;
    for(i=0;i<=n;i++)
    {
        if(i==0)
            result=1;
        else
            result=1+2*f(i-1);
    }
    return result;
}

改小n=7时,能输出,我怀疑是返回类型选错了,不知道怎么选,大家帮帮忙。。。

同样的用数组也可以实现,我在用数组做的时候选择的double,以为函数调用的话应该也一样。现在有点蒙了。
main()
{
    double a[63],sum=0;
    int i;
    a[0]=1;
    for(i=1;i<=7;i++)
    {
        a[i]=2*a[i-1];
        sum+=a[i];
    }
    sum++;
    printf("%e",sum);
    getch();
}
这个输出正常。。。。
搜索更多相关主题的帖子: 返回值 函数 类型 
2009-07-24 03:03
地狱无明火
Rank: 2
等 级:论坛游民
帖 子:62
专家分:71
注 册:2009-6-11
收藏
得分:2 
warning C4717: 'f' : recursive on all control paths, function will cause runtime stack overflow

double f(int n)
{
    double result;
    int i;
    for(i=0;i<=n;i++)
    {
        if(i==0)
            result=1;
        else
            result=1+2*f(i-1);
    }
    return result;
}

递归超越了路径控制程序,函数将导致实栈溢出.
大概就是,递归程序找不到结束点,会一直调用下去
2009-07-24 04:48
soler_z
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:28
专家分:130
注 册:2009-7-17
收藏
得分:0 
我用win-tc和dev c++没出现任何警告提示,
莫非真的是stack溢出。
这道题,用函数循环调用的方式来解决,有啥好的写法??
2009-07-24 11:58
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:2 
你的递归函数自身有问题,与函数的返回值类型无关。你为什么要用double? 我看这个程序 long long 就够了。

[[it] 本帖最后由 prankmoon 于 2009-7-24 13:28 编辑 [/it]]
2009-07-24 12:46
soler_z
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:28
专家分:130
注 册:2009-7-17
收藏
得分:0 
要是递归函数有问题,那你帮我改改,怎么改?谢谢。。。
2009-07-24 13:16
金多虾
Rank: 2
等 级:论坛游民
帖 子:153
专家分:99
注 册:2009-6-9
收藏
得分:2 
没看的很懂啊!
2009-07-25 00:05
快速回复:函数返回值类型怎么确定?
数据加载中...
 
   



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

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