标题:萌新求助,关于long long int。
只看楼主
LJX135
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-25
结帖率:0
已结贴  问题点数:20 回复次数:3 
萌新求助,关于long long int。
求大神帮帮忙,这是我校ACM协会的一道题,具体要求如下:

Description
Fibonacci数列:0,1,1,2,3,5,8,13,21,…
从0开始,后续的数具有这样的性质:当前的数是其前面两个数之和。编写一个函数计算第n个Fibonacci数,规定:Fibonacci(1)=1,fibonacci(2)=1。
 
 
Input
第一行1个整数t,表示有t组数据。以下t行,每行一个整数n。
 
 
Output
共t行,对于每个n,输出第n个Fibonacci数(结果不超过long long int的范围)。
 
 
Sample Input
2
3
5

Sample Output
2
5

Hint

long long int 的格式输出为:printf("%lld\n",a); ,还有要小心超时哦~
程序代码:
#include<stdio.h>
long long int Fibonacci(int n);
int main()
{   int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        long long int result;
        scanf("%d",&n);
        result = Fibonacci(n);
        printf("Fibonacci(%d)=%lld\n",n,result);
    }

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

上边是我写的代码,可是一提交就显示Time Limit Exceeded,我不会用long long int ,求懂的大神指点一下小弟错在哪了,以及long long int的用法,还有就是我用的编程工具是codeblock。



搜索更多相关主题的帖子: long int Fibonacci 整数 result 
2017-10-27 02:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
首先你的输出格式就和题目要求不一致,例题要求输出
2
5
你输出的是
Fibonacci(3)=2
Fibonacci(5)=5

第二,你这运行效率也太低了吧。就是最简单的从头算到尾,时间复杂度是O(n);而你这个递归算法,时间复杂度竟然也是个暴涨的斐波那契值。
自己测试时,难道没有输入一个大点儿的数字试试看?
参考一下 https://bbs.bccn.net/viewthread.php?tid=481332&page=1#pid2645909
2017-10-27 08:34
LJX135
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-25
得分:0 
代码看不懂,我只能用现有知识解决,我们刚学到函数。
2017-10-27 14:45
LJX135
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-10-25
得分:0 
程序代码:
#include<stdio.h>
long long int Fib(int n);
int main()
{   int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        long long int result;
        scanf("%d",&n);
        result = Fib(n);
        printf("%lld \n",result);
    }

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

新代码,还是不知哪里错了。
2017-10-27 14:46



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




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

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