Fibonacci Number - LeetCode
题目 The Fibonacci numbers , commonly denoted F(n)
form a sequence, called the Fibonacci sequence , such that each number is the sum of the two preceding ones, starting from 0
and 1
. That is,
1 2 F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), for N > 1.
Given N
, calculate F(N)
.
Example 1:
1 2 3 Input: 2 Output: 1 Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.
Example 2:
1 2 3 Input: 3 Output: 2 Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.
Example 3:
1 2 3 Input: 4 Output: 3 Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3.
Note:
0 ≤ N
≤ 30.
解法1[Java]:递归 1 2 3 4 5 6 7 8 9 10 11 class Solution { public int fib (int N) { if (N == 0 ) { return 0 ; } else if (N == 1 ) { return 1 ; } else { return fib(N - 1 ) + fib(N - 2 ); } } }
时空复杂度 时间复杂度:
空间复杂度:
解法2[Java]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution { public int fib (int N) { if (N == 0 ) { return 0 ; } else if (N == 1 ) { return 1 ; } else { int last = 1 ; int secondToLast = 0 ; int result = 0 ; for (int i = 2 ; i <= N; ++i) { result = last + secondToLast; secondToLast = last; last = result; } return result; } } }
时空复杂度 时间复杂度:$O(n)$
空间复杂度:$O(1)$
解法3[Java]:
参考资料
Fibonacci number - Wikipedia
Program for Fibonacci numbers - GeeksforGeeks