File tree Expand file tree Collapse file tree 1 file changed +48
-7
lines changed Expand file tree Collapse file tree 1 file changed +48
-7
lines changed Original file line number Diff line number Diff line change 5
5
6
6
## 题目大意
7
7
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
+ ```
9
26
10
27
## 解题思路
11
28
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:递推算法
13
55
14
- 直接根据递推公式求解即可 。
56
+ 根据斐波那契的递推公式 ` f(n) = f(n - 1) + f(n - 2) ` ,我们可以直接写出对应的递推算法 。
15
57
16
- ## 代码
58
+ ### 思路 2: 代码
17
59
18
60
``` Python
19
61
class Solution :
20
62
def fib (self , n : int ) -> int :
21
63
if n < 2 :
22
64
return n
23
- f1 = 0
24
- f2 = 0
25
- f3 = 1
65
+
66
+ f1, f2, f3 = 0 , 0 , 1
26
67
for i in range (2 , n+ 1 ):
27
68
f1, f2 = f2, f3
28
69
f3 = f1 + f2
You can’t perform that action at this time.
0 commit comments