码迷,mamicode.com
首页 > 编程语言 > 详细

C++面试题:斐波那契数列

时间:2020-10-31 01:36:35      阅读:18      评论:0      收藏:0      [点我收藏+]

标签:函数   turn   include   cout   str   new   int   names   斐波那契   

题目:写一个函数,输入你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)

C++面试题:斐波那契数列

标签:函数   turn   include   cout   str   new   int   names   斐波那契   

原文地址:https://www.cnblogs.com/52yu/p/13886581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!