剑指 - 斐波那契数列

斐波那契数列

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;
    }
}
全部评论

相关推荐

10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
巧克力1:双选会不如教室宣讲会
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务