原题地址:剑指 Offer 10- I. 斐波那契数列
题目中有说最终结果可能比较大,需要对1000000007取模,因此求fib(n)的过程中很可能就会超出int的范围,所以我们需要先根据取模运算的一个原理对中间的数据进行处理,然后再求对应的结果。
class Solution {
public int fib(int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
int temp1 = 0;
int temp2 = 1;
int temp = 0;
for (int i = 2; i <= n; i++) {
// 中间的每一个数据都需要先对1000000007取模
temp = (temp1 + temp2) % 1000000007;
temp1 = temp2;
temp2 = temp;
}
return temp;
}
}