| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2051 人关注过本帖
标题:不知道错哪了,求纠正
只看楼主 加入收藏
关耳扛刀
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2018-9-27
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:7 
不知道错哪了,求纠正
图片附件: 游客没有浏览图片的权限,请 登录注册

#include<stdio.h>
int main()
{
    int t,i,n,f,j;
    scanf("%d\n",&t);
    while(t--){
        scanf("%d\n",&n);
        if(n>=2){
            printf("%d\n",n-1);
        }
        if(n==-1){
            break;
        }
        }
    if(n==0){
        printf("0\n");
            }
    if(n==1){
        printf("1\n");
            }
    return 0;
 }
搜索更多相关主题的帖子: int scanf printf break return 
2018-10-07 13:35
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:5 
回复 楼主 关耳扛刀
#include<stdio.h>
#include<string.h>

int number[50];

int f(int x){
    if(number[x]!=-1) return number[x];
    return number[x]=f(x-1)+f(x-2);
}

int main(void){
    int n;
    memset(number,-1,sizeof(number));
    number[0]=0;
    number[1]=1;
    while(scanf("%d",&n) && n!=-1){
        printf("%d\n",f(n));
    }
    return 0;
}

我觉得你没理解清楚题意,求的是斐波那契数列,直接递归比较慢,记忆化搜索优化一下。
2018-10-07 14:53
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:5 
按照题目格式要求应该是这样
#include <stdio.h>
main()
{
    int a[46],i,n[10],p[10],j=0,k=0;
    do
    {
        scanf("%d",&n[j++]);   
    }while(n[j-1]!=-1);
    j=0;
    while(n[j]!=-1)
    {
        for(a[0]=0,a[1]=1,i=0;i<=n[j];i++)
        {
        if(i>1)a[i]=a[i-1]+a[i-2];
        }
        p[k++]=a[i-1];
        j++;
    }
    for(i=0;i<k;i++)
    printf("%d\n",p[i]);
}

[此贴子已经被作者于2018-10-7 17:01编辑过]

2018-10-07 15:49
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:5 
回复 3楼 ehszt
你的代码输入3 4 5 3 4 5 -1的到的结果是2 3 5 5 5 5。

C果然是有点难啊!
2018-10-07 16:33
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 4楼 MeandC
确实有错误已更正
2018-10-07 17:01
拉拉面
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:5
注 册:2018-9-22
收藏
得分:5 
#include<cstdio>
long long f(int n);

long long f(int n)
{
    long long a=1,b=1,c;
    int i;
    if(n==0)
        return 0;
    else
    {
        for(i=1;i<n;i++)
        {
            c=(a+b);//临时变量
            a=b;
            b=c;
        }
        return a;
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%lld",f(n));
    return 0;
}

斐波那契数列

哈哈哈哈哈啦啦啦
2018-10-07 18:15
拉拉面
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:5
注 册:2018-9-22
收藏
得分:0 
下面是递归版
#include<cstdio>

long long f(int n)
{
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    else
        return f(n-1)+f(n-2);
}

int main()
{
    int n;
    scanf("%d",&n);
    printf("%lld",f(n));
    return 0;
}

哈哈哈哈哈啦啦啦
2018-10-07 18:16
李翼展
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-10-8
收藏
得分:0 
= =
2018-10-08 13:38
快速回复:不知道错哪了,求纠正
数据加载中...
 
   



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

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