剑指offer 面试题9:斐波那契数列 题解

面试题9:斐波那契数列

提交网址: http://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160


  • 参与人数:7267  时间限制:1秒  空间限制:32768K

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项  Fibonacci(int n)


分析:

用递归会TLE,因为有不少地方进行了重复计算,改为循环即可解决(迭代法)...

另外为了避免输入非法值(比如负数),输入改为了unsigned int


AC代码:

class Solution {
public:
    int Fibonacci(unsigned int n) {

        int arr[2]={0,1};
        if(n<2) return arr[n];
        
        long long fib_2preN=0;      // f(n-2)
        long long fib_1preN=1;      // f(n-1)
        long long fib_N=0;
        
        for(int idx=2; idx <= n; idx++)
        {
            fib_N=fib_2preN+fib_1preN;
            fib_2preN=fib_1preN;
            fib_1preN=fib_N;
        }
        return fib_N;
    }
};



你可能感兴趣的:(数据结构与算法,解题报告,剑指offer)