剑指 - 斐波那契数列

斐波那契数列

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

递归

当前 = 前一个 + 前两个,递归极其容易超时

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

迭代

递归容易超时,那是递归在计算的时候,计算过很多次已经计算过的结果,可以保存下来

迭代的时候,只关注当前的数的前一个和前两个,每次用变量临时纪录起来,那么只需相加即可,而不是像递归那样重复计算

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

相关推荐

比亚迪汽车新技术研究院 硬件工程师 总包21左右 硕士
点赞 评论 收藏
分享
10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务