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

题目描述

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

思路:递归解法很简单

public class Solution {
    public static int Fibonacci(int n) {
        return n<=1?n:(Fibonacci(n-1)+Fibonacci(n-2));
    }
    public static void main(String[] args){
        int n=10;
        System.out.println(Fibonacci(n));
    }
}

在牛客网提交会提示运行超时,递归在效率上不可取,里面包含很多重复计算。

通过循环方式解决。可以先求出f1,f2,根据f3=f1+f2,得到f3,然后把f2的值赋值给f1,f3的值赋值给f2,…,循环下去,直到fn,
牛客网提交成功的代码:

public class Solution {
    public static int Fibonacci(int n) {
        //return n<=1?n:(Fibonacci(n-1)+Fibonacci(n-2));
        if(n<=1)return n;
        int fibOne=0;
        int fibTwo=1;
        int result=0;
        for(int i=2;i<=n;i++){
            result=fibOne+fibTwo;
            fibOne=fibTwo;
            fibTwo=result;
        }
        return result;
    }

    public static void main(String[] args){
        int n=10;
        System.out.println(Fibonacci(n));
    }
}

你可能感兴趣的:(剑指offer之面试题9:斐波那契数列)