| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1576 人关注过本帖
标题:输入大于2的数输出都为1
只看楼主 加入收藏
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
结帖率:100%
收藏
已结贴  问题点数:8 回复次数:30 
输入大于2的数输出都为1
//(前一项分子+前两项的分子)/(前一项分母+前两项的分母)
#include<stdio.h>
int fun(int n)
{
    int a;
    if(n==0) return 0;
    if(n==1) return 2/1;
    if(n==2) return 2/1+3/2;
    else return (fun(n-2)+fun(n-1))/(fun(n-2)+fun(n-1))0;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",fun(n));
    }
    return 0;
}
错误如题,是哪错了
搜索更多相关主题的帖子: return 
2013-11-01 13:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
没看明白你写这些东东

DO IT YOURSELF !
2013-11-01 13:21
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
收藏
得分:0 
回复 2楼 wp231957
有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13,...。求出这个数列的前n项和。
这是题目,谢谢
2013-11-01 14:08
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:2 
找公式

仰望星空...........不忘初心!
2013-11-01 15:01
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
收藏
得分:0 
回复 4楼 Susake
没有通项公式,要递推,所以我用递归函数做,但输出结果错
2013-11-01 15:05
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:0 
浮点数!

仰望星空...........不忘初心!
2013-11-01 15:11
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include<stdio.h>

int main()
{
    double first_i=2.00;
    double first_j=1.00;
    double tmp1=0.00;
    double tmp2=0.00;
    double cal=0.00;
    int n=0;
    while(1)
    {
        cal+=first_i/first_j;
        tmp1=first_i;
        tmp2=first_j;
        printf("%.0f",first_i);
        printf("/");
        printf("%.0f",first_j);
        printf("+");
        first_i=tmp1+tmp2;
        first_j=tmp1;
        n++;
        if(n>10) break;
    }
    printf("=%.4f\n",cal);
    return 0;
}


样例输出:

2/1+3/2+5/3+8/5+13/8+21/13+34/21+55/34+89/55+144/89+233/144+=18.0980

DO IT YOURSELF !
2013-11-01 15:15
无果分
Rank: 1
等 级:新手上路
帖 子:22
专家分:1
注 册:2013-10-26
收藏
得分:0 
回复 7楼 wp231957
看着不懂,太高深了
{
Description
有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13,...。求出这个数列的前n项和。
Input
输入有若干行,每行一个整数n(0<=n<=1000),表示数列的项数。n=0表示结束。
Ouput
每行对应输出前n项的和。结果保留2位小数。
Sample Input
1
5Sample Output
2.00
8.39
}
这是题目,原原本本的
按我的代码用递归做不行吗
2013-11-01 15:20
wkz2012
Rank: 4
等 级:业余侠客
帖 子:123
专家分:253
注 册:2012-12-13
收藏
得分:2 
以下是引用无果分在2013-11-1 13:06:10的发言:

//(前一项分子+前两项的分子)/(前一项分母+前两项的分母)
#include<stdio.h>
int fun(int n)
{
    int a;
    if(n==0) return 0;
    if(n==1) return 2/1;
    if(n==2) return 2/1+3/2;
    else return (fun(n-2)+fun(n-1))/(fun(n-2)+fun(n-1))0;   //这里的0是什么意思?
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",fun(n));
    }
    return 0;
}
错误如题,是哪错了




你的理解是对的,就是可以找出规律,知道第N个分数的分子和分母分别是前两个的分子和分母之和,不过你的算法错了,既然fun()是一个求和函数,那
else return (fun(n-2)+fun(n-1))/(fun(n-2)+fun(n-1))
这句代码就不是求第N个分数,所以要改

int fun(){
 
 if(n==1) return 2;
 else if(n==2) return 3;
else return fun(n-2)+fun(n-1);
}
int  dom(){
  if(n==1) return 1;
  else if (n==2) return 2;
  else return dom(n-2)+dom(n-1);
}
double sum(int n){

  double sum = 0.00;
   return sum+=fun(n)/dom(n);
}



不过貌似我的过于死板,还是7楼的代码给力,可以看看7楼的

[ 本帖最后由 wkz2012 于 2013-11-1 15:32 编辑 ]

我了个去的编程!
2013-11-01 15:28
古道风
Rank: 2
等 级:论坛游民
帖 子:12
专家分:17
注 册:2013-9-16
收藏
得分:2 
支持七楼,九楼的必须定义前两项才能进行后面的运算,而七楼的简单一些

  七楼的你看不懂?不会吧!!
  第一项的分子是第二项的分母,第一项的分子加上分母是第二项的分子,以此类推由前一项推后一项
   这样说该明白了吧!!!!

[ 本帖最后由 古道风 于 2013-11-1 15:42 编辑 ]
2013-11-01 15:35
快速回复:输入大于2的数输出都为1
数据加载中...
 
   



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

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