问题标题: 酷町堂:1028 神奇的斐波那契数列

1
0
已解决
张岳恒
张岳恒
资深光能
资深光能
#include<iostream>
using namespace std;
int fbnq(int k){
    if(k==1) return 1;
    if(k==2) return 1;
    return fbnq(k-1)+fbnq(k-2);
}
int main(){
    int n;
    cin>>n;
    cout<<fbnq(n);
    return 0;
}

88分,TLE了


0
已采纳
董子墨
董子墨
中级天翼
中级天翼

用递推,不要用递归

0
梁志鑫宇
梁志鑫宇
中级守护
中级守护

我就是直接用循环做的,100分。

下面是我的思路(不用函数):

1、定义n,输入n,并定义一个数组(长度47)。

2、特判1、2。

3、数组第一、二个元素赋值为1。

4、循环:i = 3,一直到n,  第i个元素=第i-1个元素+第i-2个元素。

5、输出第n个元素。

望采纳!!

梁志鑫宇在2020-04-08 09:29:42追加了内容

如有问题就评论我。

0
刘欣然
刘欣然
高级光能
高级光能

这一题最好用地推,地推准能AC

先用地推写,不会评论

0
黄依成
黄依成
中级天翼
中级天翼

#include<iostream>
using namespace std;
long long n,a[46]={1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296,433494437,701408733,1134903170,1836311903};
int main(){
    cin>>n;
    cout<<a[n-1];
    return 0;

 

打表大法,又快又容易理解。

0
0
赵航宇
赵航宇
资深守护
资深守护

我用的是疯狂的打表法:

虽然手很酸,但却AC了

你也可以试试哦!!!

望采纳!!!

0
江齐悦
江齐悦
高级光能
高级光能

long long a[101];

int main(){

a[1]=a[2]=1;

int n;

输入>>n;

for(int i=3;i<=n;++i){

a[i]=a[i-1]+a[i-2];

}

cout<<a[n];

}

0
我要回答