- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfibonacci.ts
41 lines (36 loc) · 802 Bytes
/
fibonacci.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* @description 斐波那契数列
* @author tangc1
* @date 2022-05-03 17:06:20
*/
/**
* @description 复杂度O(2^n)
* param {Object}
* return {Object}
*/
// export function fibonacci(n: number): number {
// if (n <= 0) return 0
// if (n === 1) return 1
// return fibonacci(n - 1) + fibonacci(n - 2)
// }
/**
* @description 复杂度O(n)
* param {Object}
* return {Object}
*/
exportfunctionfibonacci(n: number): number{
if(n<=0)return0
if(n===1)return1
letn1=1// 记录n-1的结果
letn2=0// 记录n-2的结果
letres=0
for(leti=2;i<=n;i++){
res=n1+n2
// 记录中间结果
n2=n1
n1=res
}
returnres
}
// console.info(fibonacci(2));
// console.info(fibonacci(3));