# LC 509. Fibonacci Number
### [Problem link](https://leetcode.com/problems/fibonacci-number/)
###### tags: `leedcode` `python` `c++` `easy` `DP`
The **Fibonacci numbers** , commonly denoted <code>F(n)</code> form a sequence, called the **Fibonacci sequence** , such that each number is the sum of the two preceding ones, starting from <code>0</code> and <code>1</code>. That is,
```
F(0) = 0, F(1) = 1
F(n) = F(n - 1) + F(n - 2), for n > 1.
```
Given <code>n</code>, calculate <code>F(n)</code>.
**Example 1:**
```
Input: n = 2
Output: 1
Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.
```
**Example 2:**
```
Input: n = 3
Output: 2
Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.
```
**Example 3:**
```
Input: n = 4
Output: 3
Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3.
```
**Constraints:**
- <code>0 <= n <= 30</code>
## Solution 1 - DP
#### Python
```python=
class Solution:
def fib(self, n: int) -> int:
if n <= 1:
return n
dp = [0, 1]
for i in range(2, n + 1):
dp[0], dp[1] = dp[1], dp[0] + dp[1]
return dp[1]
```
#### C++
```cpp=
class Solution {
public:
int fib(int n) {
vector<int> dp = {0, 1};
if (n <= 1) {
return dp[n];
}
for (int i = 2; i <= n; i++) {
int tmp = dp[0] + dp[1];
dp[0] = dp[1];
dp[1] = tmp;
}
return dp[1];
}
};
```
>### Complexity
>| | Time Complexity | Space Complexity |
>| ----------- | --------------- | ---------------- |
>| Solution 1 | O(n) | O(1) |
## Note
x