剑指Offer(牛客网) .斐波那契数列

题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39

来源:https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

思路:
我们可以将递推式的求解从自顶向下改为自底向上(循环实现)。简而言之,我们已知前两项的值,然后我们就可以用前两项的值求出第3项的值,接着求第4、第5、……,直到求出第n项的值。

public class Solution {
    public int Fibonacci(int n) {
         int a = 0;
         int b = 1;//第一项的值
        while(n-->0){
            b = a + b;//根据前两项计算出后一项
            a = b - a;//保存计算结果的前一项
        }
        return a;
    }
}

递归:

public class Solution {
    public int Fibonacci(int n) {
     
        if(n<2)return n;
        //第n项就是第n-1项加上第n-2项
        return Fibonacci(n-1)+Fibonacci(n-2);
    }
}
发布了24 篇原创文章 · 获赞 2 · 访问量 367

猜你喜欢

转载自blog.csdn.net/Iloveyshsh/article/details/105349653