Skip to content

Commit b94aa23

Browse files
committed
Add 0509 Solution.js and README.md
1 parent e332cef commit b94aa23

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

solution/0509.Fibonacci/README.md

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# 斐波那契数
2+
3+
### 题目描述
4+
5+
**斐波那契数**,通常用 `F(n)` 表示,形成的序列称为**斐波那契数列**。该数列由 `0``1` 开始,后面的每一项数字都是前面两项数字的和。也就是:
6+
7+
```
8+
F(0) = 0, F(1) = 1
9+
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
10+
```
11+
12+
给定 `N`,计算 `F(N)`
13+
14+
**示例 1:**
15+
16+
```
17+
输入:2
18+
输出:1
19+
解释:F(2) = F(1) + F(0) = 1 + 0 = 1.
20+
```
21+
22+
**示例 2:**
23+
24+
```
25+
输入:3
26+
输出:2
27+
解释:F(3) = F(2) + F(1) = 1 + 1 = 2.
28+
```
29+
30+
**示例 3:**
31+
32+
```
33+
输入:4
34+
输出:3
35+
解释:F(4) = F(3) + F(2) = 2 + 1 = 3.
36+
```
37+
38+
39+
40+
**提示:**
41+
42+
- 0 ≤ `N` ≤ 30
43+
44+
### 解题思路
45+
46+
**思路**
47+
48+
利用递归思想,递归公式`F(n) = F(n - 1) + F(n - 2)`,递归的终止条件`F(1) = 1``F(2) = 2`
49+
50+
**算法**
51+
52+
```javascript
53+
let preResult = {};
54+
var fib = function(N) {
55+
if( N === 0 ) return 0;
56+
if( N === 1 ) return 1;
57+
if( preResult[N] ){
58+
return preResult[N];
59+
} else {
60+
preResult[N] = fib(N-1) + fib(N-2);
61+
}
62+
return fib(N-1) + fib(N-2);
63+
};
64+
```
65+
66+
67+
68+
**复杂度分析**
69+
70+
暂无

solution/0509.Fibonacci/Solution.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {number} N
3+
* @return {number}
4+
*/
5+
6+
/**
7+
* Author: Mcnwork2018
8+
*/
9+
10+
let preResult = {};
11+
var fib = function(N) {
12+
if ( N === 0 ) return 0;
13+
if ( N === 1 ) return 1;
14+
if ( preResult[N] ) {
15+
return preResult[N];
16+
} else {
17+
preResult[N] = fib(N-1) + fib(N-2);
18+
}
19+
return fib(N-1) + fib(N-2);
20+
};

0 commit comments

Comments
 (0)