剑指offer:斐波那契数列

斐波那契数列

http://www.nowcoder.com/questionTerminal/c6c7742f5ba7442aada113136ddea0c3

思路:

斐波那契数列:0,1,1,2,3,5...F(n-2),F(n-1),F(n)=F(n-2)+F(n-1)

  1. 递归
  2. 用数组来保存fibonacci数列,然后根据输入的n返回数组下标为n处的值。
  3. 根据斐波那契数列的公式,可以用3个变量来表示(也可以只用两个变量)

答案:

1.递归

public class Solution {
    public int Fibonacci(int n) {
        if(n <= 1){
            return n;
        }
        return Fibonacci(n-1)+Fibonacci(n-2);
    }
}

2.数组

public class Solution {
    public int Fibonacci(int n) {
        int[] fib = new int[40];
        fib[0] = 0;
        fib[1] = 1;
        for(int i = 2; i <= n; i++){
            fib[i] = fib[i-1] + fib[i-2];
        }
        return fib[n];
    }
}

3.用3个变量来表示

public class Solution {
    public int Fibonacci(int n) {
        int pre1 = 1;
        int pre2 = 0;
        int cur = 0;
        for(int i = 2; i <= n; i++){
            cur = pre1 + pre2;
            pre2 = pre1;
            pre1 = cur;
        }
        if(n < 2){
            return n;
        }
        return cur;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

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