| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1421 人关注过本帖
标题:用函数求数列前20项和
只看楼主 加入收藏
胡文涛
Rank: 1
来 自:北京 朝阳
等 级:新手上路
帖 子:29
专家分:0
注 册:2016-6-30
结帖率:87.5%
收藏
已结贴  问题点数:5 回复次数:5 
用函数求数列前20项和
原题如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

C程序:
#include<stdio.h>
int F(int n);
int main()
{
    int n;
    double sum=0.;
    for (n=2;n<=21;n++)
        sum=sum+F(n+1)/F(n);
    printf("The sum is %lf",sum);
    return 0;
}
int F(int n)
{
    int a;
    if (n==1||n==2)
        a=1;
    if (n>2)
        a=F(n-1)+F(n-2);
    return a;
}
运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

与实际情况不符,不知问题出在哪
搜索更多相关主题的帖子: double return 
2016-07-20 11:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
3/2 等于 1
3.0/2.0 等于 1.5
2016-07-20 11:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
程序代码:
#include <stdio.h>

int main( void )
{
    double sum = 0;
    for( unsigned i=0,a=2,b=1; i!=20; ++i,a+=b,b=a-b )
        sum += a*1.0/b;
    printf( "The sum is %lf\n", sum );

    return 0;
}
输出:
The sum is 32.660261

2016-07-20 12:08
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:1 
楼上已给出正解。我画蛇添足解释下,这里你的sum虽然是double,但是a,b都是int,程序执行的时候是先计算右边的除法,两个int他就会进行整除运算,在和sum相加并赋值的时候才被转换为double了。。。
楼上加了一个*1.0,程序就会先执行a*1.0,这个时候a就会被转换成浮点数,、、、、以此类推

φ(゜▽゜*)♪
2016-07-20 12:43
胡文涛
Rank: 1
来 自:北京 朝阳
等 级:新手上路
帖 子:29
专家分:0
注 册:2016-6-30
收藏
得分:0 
回复 3楼 rjsp
果然如此,十分感谢!
2016-07-20 13:08
胡文涛
Rank: 1
来 自:北京 朝阳
等 级:新手上路
帖 子:29
专家分:0
注 册:2016-6-30
收藏
得分:0 
回复 4楼 书生牛犊
感谢解答
2016-07-20 13:09
快速回复:用函数求数列前20项和
数据加载中...
 
   



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

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