| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖
标题:关于简单的无限序列相加的问题
只看楼主 加入收藏
sulang123
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-2-4
结帖率:42.86%
收藏
已结贴  问题点数:20 回复次数:6 
关于简单的无限序列相加的问题
#include <stdio.h>

int main(void)
{
    float a,b;
    int end;
    printf("Enter the times of calculateiong:");
    scanf("%d",&end);
    for (a=0,b=1.0;b<=end ;b*=2 )
    {
        if (b/2!=0)
        {
            a+=1.0/b;
        }
        else if (b/2==0)
        {
            a+=1.0/b*-1;
        }
    }
    printf("%f",a);

    return 0;
}

 
 
我想要实现1.0-1.0/2.0+1.0/3.0-1.0/4.0+.......这个目的的代码,我想请问一下,我的这个代码对吗?如果错了,错在那里.
如果对了,是否还可以写得更加简练一些?

[ 本帖最后由 sulang123 于 2011-2-4 22:41 编辑 ]
搜索更多相关主题的帖子: Enter return include 
2011-02-04 22:39
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:5 
程序不对,你自己赋个初值算一算就可以明白了
比如赋值end=4
第一轮:b=1,a=1.0/1.0;
第二轮:b=2,a=1.0/1.0-1.0/2.0;
第三轮: b=4,a=1.0/1.0-1.0/2.0-3.0/4.0;
至此循环结束,正确答案应为1.0-1.0/2.0+1.0/3.0-1.0/4.0
而这个答案显然错误
这个题解法很多,迭代,递归应该均可,比如迭代的话,每次分母都是前一个的分子加上分母之和,而分子式恒为1
当然也可以直接做,不需要任何特别的方法,因为每次分母都是自己+1嘛
考虑符号的时候可以设置符号位为s=1,每轮循环自乘-1,则可以形成交错级数
2011-02-04 23:35
sulang123
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-2-4
收藏
得分:0 
谢谢了啊。。。。旁观者清啊。。。。。
2011-02-05 00:07
sulang123
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2011-2-4
收藏
得分:0 
是否可以写一个例子给我。。。
你说的那些方法。。。。
2011-02-05 00:09
baoyuwang198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:180
注 册:2011-1-22
收藏
得分:5 
可以设置一个全局Flag=1,每次循环中使Flag=-Flag; 分母=分母*Flag;其他的都差不多
自己去搞吧!

曾经我们两个人28楼上仰望星星
如今我一个人28层楼下仰望过去
2011-02-05 00:18
nicum
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:180
专家分:712
注 册:2011-2-1
收藏
得分:5 
很明显,错了;你的for循环中b*=2之后,b为偶数,就不可能出现b/2!=0的情况;
改为:
#include <stdio.h>
int main(void)
{
    float a,b;
    int end;
    printf("Enter the times of calculateiong:");
    scanf("%d",&end);
    for (a=0,b=1.0;b<=end ;b++ )
    {
        if (b/2!=0)
            a+=1.0/b;
        else
            a-=1.0/b;
    }
    printf("%f",a);
    return 0;
}
2011-02-05 14:44
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:5 
这种无限循环一般都是设置一个Flag变量,就如楼上所言。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-02-05 20:17
快速回复:关于简单的无限序列相加的问题
数据加载中...
 
   



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

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