剑指 Offer 10- I. 斐波那契数列(简单)

题目描述

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例:

剑指 Offer 10- I. 斐波那契数列(简单)_第1张图片

分析:

采用循环解决问题,需要注意的是结果为b取模1000000007剑指 Offer 10- I. 斐波那契数列(简单)_第2张图片

代码:

class Solution {
    public int fib(int n) {
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        int a = 0;
        int b = 1;
        int c;
        int d = 2;
        while(d<=n){
            c = a;
            a = b;
            b = (b+c)%1000000007;
            d ++; 
        }
        return b;
    }
}

结果:

剑指 Offer 10- I. 斐波那契数列(简单)_第3张图片

你可能感兴趣的:(算法(剑指Offer),leetcode,动态规划,算法)