标题:新手关于分数序列的求解
只看楼主
我就是怪蜀黍
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-9
结帖率:100%
已结贴  问题点数:10 回复次数:11 
新手关于分数序列的求解
求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,……前20项之和。
我的做法
#include<stdio.h>
void main()
{
    int i,t;
    float a=2,b=1,s=2;
    for(i=1;i<20;i++)
    {
        a=a+b;b=++b;
        s=s+a/b;
    }
    printf("%f\n",s);
}

还有就是我看到分子和分母都是斐波那契数列,所以有试了下面一个程序,但是还是错了
#include<stdio.h>
void main()
{
    int i;
    float f1=2,f2=3,k1=1,k2=2,s=2;
    for(i=1;i<10;i++)
    {
        f1=f1+f2;
        f2=f2+f1;
        k1=k2+k1;
        k2=k1+k2;
        s=(k1/f1)+(k2/f2)+s;
    }
    printf("%f\n",s);
}
正解和我的第一种做法多了一个中间变量

#include<stdio.h>
void main()
{
    int i,t;
    float a=2,b=1,s=0;
    for(i=1;i<=20;i++)
    {
        s=s+a/b;
        t=a;
        a=a+b;
        b=t;

    }
    printf("%f\n",s);
}
问题可能问的很弱智,轻喷。。。
为什么我的程序会错?错在哪里?谢谢

[ 本帖最后由 我就是怪蜀黍 于 2013-4-11 23:09 编辑 ]
搜索更多相关主题的帖子: include void 
2013-04-11 23:00
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
得分:0 
你想说明一个什么问题啊?
2013-04-11 23:07
我就是怪蜀黍
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-9
得分:0 
回复 2楼 yctchxf
为什么我的两个程序会错?错在哪里?谢谢

我是新手,多多指教
2013-04-11 23:08
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:0 
你用笔划一划你for语句里面的过程就知道哪里错了,,,,明显是哪个分子b美掌握到规律
应该是这样
程序代码:
#include<stdio.h>
void main()
{
    int i,t;
    float a=2,b=1,s=2,n;
    for(i=1;i<20;i++)
    {
        n=a;
        a=a+b;
        b=n;
        s=s+a/b;
    }
    printf("%f\n",s);
}

 

三十年河东,三十年河西,莫欺少年穷!
2013-04-12 00:25
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:0 
额    不好意思啊  没看到你后面有正解,和我的程序一样,那我就具体和你说说错在哪吧
 for(i=1;i<20;i++)
    {
        a=a+b;b=++b;    //b是逐 1 增加的... 你看看能与那个关系相符吗?
        s=s+a/b;
    }


第二个程序我也没看了,想必你要是理解了第一个就会豁然开朗

三十年河东,三十年河西,莫欺少年穷!
2013-04-12 00:29
我就是怪蜀黍
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-9
得分:0 
回复 5楼 韶志
对了,我是想错了,但是这个程序我看到的第一眼就想到斐波那契数列来做,我就是不知道为甚也不对

我是新手,多多指教
2013-04-12 07:46
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:5 
回复 6楼 我就是怪蜀黍
斐波那契数列是指1,1,2,3,5,8...这样一个数列,注意前面是两个1,程序应该这样写
程序代码:
#include<stdio.h>
void main()
{
    int i;
    float f[22],s=0;
    f[0]=1;
    f[1]=1;
    for(i=2;i<=21;i++)
        f[i]=f[i-1]+f[i-2];
    for(i=1;i<=21;i++)
        s+=f[i+1]/f[i];
    printf("%f\n",s);
}


三十年河东,三十年河西,莫欺少年穷!
2013-04-12 10:00
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:5 
回复 6楼 我就是怪蜀黍
你的程序很麻烦而且错了,我给你改成了这样
#include<stdio.h>
void main()
{
    int i;
    float f1=2,f2=3,k1=1,k2=2,s=3.5;  //这里s的初始值应该是2/1+3/2=3.5
    for(i=1;i<10;i++)
    {
        f1=f1+f2;
        f2=f2+f1;
        k1=k2+k1;
        k2=k1+k2;
        s=(f1/k1)+(f2/k2)+s;   //这里你的k与f的位置写反了
    }
    printf("%f\n",s);
}

三十年河东,三十年河西,莫欺少年穷!
2013-04-12 10:09
whukeming
Rank: 2
等 级:论坛游民
帖 子:76
专家分:51
注 册:2008-8-24
得分:0 
斐波那契可以用递归。

程序代码:
# include "stdio.h"

double feibo(int n)   //这的n指的是第n项
{
    if (0 == n)
        return 0L;
    
    else if (1L==n || 2L==n)
        return 1L;
    
    else
        return (feibo(n-1) + feibo(n-2));
}
int main(void)

{
    int n = 5;
    
    double s = 0;
    
    int i;
    
    for (i=2; i<=n+1; i++)
    {
        s = s + feibo(i+1)/feibo(i);
        
    }
    
    printf("%lf", s);
    return 0;

}


[ 本帖最后由 whukeming 于 2013-4-12 11:29 编辑 ]
2013-04-12 11:23
我就是怪蜀黍
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-9
得分:0 
回复 7楼 韶志
我之所以想写这个程序是因为受到这个代码的影响,所以没想到用数组
#include<stdio.h>
void main()
{
    int i,f1=1,f2=1,s=0;
    printf("%12d%12d",f1,f2);
        for(i=0;i<20;i++)
        {
            f1=f1+f2;
            f2=f2+f1;
            printf("%12d%12d",f1,f2);
            if(i%2==0)
                printf("\n");
        }
}
我感觉比较巧妙,所以就按照这个思路写了写下去,但是现在看看真的很麻烦还是很容易错,不过谢谢啦

我是新手,多多指教
2013-04-12 12:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-403910-1-1.html




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

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