Skip to content

Commit d2c7af4

Browse files
author
杨世超
committed
Update 0509. 斐波那契数.md
1 parent a93edaa commit d2c7af4

File tree

1 file changed

+48
-7
lines changed

1 file changed

+48
-7
lines changed

Solutions/0509. 斐波那契数.md

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,65 @@
55

66
## 题目大意
77

8-
给一个整数 n ,计算第 n 个斐波那契数。
8+
**描述**:给定一个整数 `n`
9+
10+
**要求**:计算第 `n` 个斐波那契数。
11+
12+
**说明**
13+
14+
- 斐波那契数列的定义如下:
15+
- `f(0) = 0, f(1) = 1`
16+
- `f(n) = f(n - 1) + f(n - 2)`,其中 `n > 1`
17+
18+
19+
**示例**
20+
21+
```Python
22+
输入 n = 2
23+
输出 1
24+
解释 F(2) = F(1) + F(0) = 1 + 0 = 1
25+
```
926

1027
## 解题思路
1128

12-
斐波那契的递推公式为:F(n) = F(n-1) + F(n-2)。
29+
### 思路 1:递归算法
30+
31+
根据我们的递推三步走策略,写出对应的递归代码。
32+
33+
1. 写出递推公式:`f(n) = f(n - 1) + f(n - 2)`
34+
2. 明确终止条件:`f(0) = 0, f(1) = 1`
35+
3. 翻译为递归代码:
36+
1. 定义递归函数:`fib(self, n)` 表示输入参数为问题的规模 `n`,返回结果为第 `n` 个斐波那契数。
37+
2. 书写递归主体:`return self.fib(n - 1) + self.fib(n - 2)`
38+
3. 明确递归终止条件:
39+
1. `if n == 0: return 0`
40+
2. `if n == 1: return 1`
41+
42+
### 思路 1:代码
43+
44+
```Python
45+
class Solution:
46+
def fib(self, n: int) -> int:
47+
if n == 0:
48+
return 0
49+
if n == 1:
50+
return 1
51+
return self.fib(n - 1) + self.fib(n - 2)
52+
```
53+
54+
### 思路 2:递推算法
1355

14-
直接根据递推公式求解即可
56+
根据斐波那契的递推公式 `f(n) = f(n - 1) + f(n - 2)`,我们可以直接写出对应的递推算法
1557

16-
## 代码
58+
### 思路 2:代码
1759

1860
```Python
1961
class Solution:
2062
def fib(self, n: int) -> int:
2163
if n < 2:
2264
return n
23-
f1 = 0
24-
f2 = 0
25-
f3 = 1
65+
66+
f1, f2, f3 = 0, 0, 1
2667
for i in range(2, n+1):
2768
f1, f2 = f2, f3
2869
f3 = f1 + f2

0 commit comments

Comments
 (0)