| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 931 人关注过本帖
标题:为什么运行不出结果
只看楼主 加入收藏
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
结帖率:79.31%
收藏
已结贴  问题点数:10 回复次数:12 
为什么运行不出结果
已知:  f(0)=f(1)=1  f(2)=0  f(n)=f(n-1)-2f(n-2)+f(n-3),  (n>2)  求f(0)到f(50)中的最大值

#include"stdio.h"
#include"math.h"
long f(long n)
{

    if(n==0||n==1)return 1;
    else if(n==2)return 0;
    return f(n-1)-2*f(n-2)+f(n-3);
}
long main()
{
    long i,max=0;
    for(i=0;i<=50;i++)
    {
        if( f(i)>max)
         max=f(i);
    }
    printf("%ld\n",max);
    getchar();
   
   
   
   
   
    }
搜索更多相关主题的帖子: include return 最大值 
2014-02-26 16:00
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:2 
可能是因为耗时很长的原因。
2014-02-26 16:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54061
注 册:2011-1-18
收藏
得分:2 
没验证正确性,只是示意一下算法
程序代码:
#include <stdio.h>

int main()
{
    int a=1, b=1, c=0;
    int m = 1;
    for( int i=3; i<=50; ++i )
    {
        int d = c - 2*b + a;
        if( d > m )
            m = d;

        a = b;
        b = c;
        c = d;
    }

    printf( "%d\n", m );
    return 0;
}



[ 本帖最后由 rjsp 于 2014-2-26 16:40 编辑 ]
2014-02-26 16:36
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:0 
回复 3楼 rjsp
我用EXCEL表格算出的结果是212101,为什么?
2014-02-26 17:01
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:0 
回复 4楼 zhu_zhi
对不起,应是598325,我少算一位数组元素。
2014-02-26 17:04
huaheshang
Rank: 2
来 自:日照
等 级:论坛游民
帖 子:91
专家分:37
注 册:2010-12-7
收藏
得分:0 
有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13....(即:该数列从第二项开始,其分子是前一项的分子与分母之和,而其分母是前一项的分子),求出这个序列前56项的和。要求:按四舍五入的方式精确到小数点后第三位。   


#include"stdio.h"
#include"math.h"
 double main()
{
  int a,b,c,i;
  double sum=0;
  a=1;
  b=2;
  for(i=1;i<=56;i++)
  {
   sum=sum+1.0*b/a;
   c=a+b;
   a=b;
   b=c;  
  }
  printf("%.3lf",sum);
  getchar();
  
}
无法运行的原因
2014-02-26 19:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
一事一议
尽量别把好几个内容不相干的贴子放在一起

DO IT YOURSELF !
2014-02-26 21:45
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用huaheshang在2014-2-26 19:59:13的发言:

有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13....(即:该数列从第二项开始,其分子是前一项的分子与分母之和,而其分母是前一项的分子),求出这个序列前56项的和。要求:按四舍五入的方式精确到小数点后第三位。   


#include"stdio.h"
#include"math.h"
 double main()
{
  int a,b,c,i;
  double sum=0;
  a=1;
  b=2;
  for(i=1;i<=56;i++)
  {
   sum=sum+1.0*b/a;
   c=a+b;
   a=b;
   b=c;  
  }
  printf("%.3lf",sum);
  getchar();
  
}
无法运行的原因

double  main还真没见过

DO IT YOURSELF !
2014-02-26 21:47
ljx小子
Rank: 8Rank: 8
来 自:星星
等 级:蝙蝠侠
威 望:2
帖 子:222
专家分:916
注 册:2013-10-7
收藏
得分:2 
回复 6楼 huaheshang
没有错误吧。。

。。。。。。。。。。。
2014-02-26 21:49
华子hear
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:57
专家分:104
注 册:2013-6-3
收藏
得分:2 
运行不出来,呵呵!程序没问题。如果非要算出来答案,我考虑是不是可以分五段来算,五段的结果再比较大小。理论上应该没问题
2014-02-26 22:19
快速回复:为什么运行不出结果
数据加载中...
 
   



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

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