<span>C++面试题:斐波那契数列</span>

题目:写一个函数,输入你n,求斐波那契数列的第n项

(1)C语言教科书上的递归解法

缺点:虽然直观,但时间效率低。(存在重复计算)

int f1(int n) {
    if(n < 1) {
        return 0;
    }else if(n == 1 || n == 2) {
        return 1;
    }
 
    return f1(n-1) + f1(n-2);
}

(2)递归的算法用循环实现

从下往上计算,时间复杂度O(n)

#include <iostream>
using namespace std;

long long Fibonacci(unsigned n)
{
    int result[2] = {0,1};
    if(n<2)  return result[n];

    long long fiboOne = 1;  
    long long fiboTwo = 0;
    long fiboNew = 0; //最后结果
    for(unsigned int i=2; i<=n; ++i)
    {
        fiboNew = fiboOne + fiboTwo;
        fiboTwo = fiboOne;
        fiboOne =  fiboNew;
    }
    return fiboNew;
}

int main() {
    long long n;
    cin>>n;
	cout  << Fibonacci(n)<<endl;
	return 0;
}

(3)用公式,时间复杂度O(logn)

全部评论

相关推荐

05-23 19:33
重庆大学 Java
只学了传统后端,马上去后端实习了,在想要不要学习agent开发相关的。27秋招和26相比难度如何?
我连备胎都不是却还在...:就暑期实习而言,大厂官宣hc 比 26 多,但是我观察看应该低于 26 的,估计秋招也不简单
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务