1.普通版递归
function fibonacci1(n) { if (n <= 2) return 1; return fibonacci1(n - 1) + fibonacci1(n - 2); } console.log(fibonacci1(20)) // 6765
简单易懂,缺点就是
当n比较大时,会出现栈溢出,导致浏览器假死
2.优化版递归
function fibonacci2(n, re1 = 1, re2 = 1) { if (n <= 2) return re2; return fibonacci2(n - 1, re2, re1 + re2); }
3.函数
function fibonacci3(n) { if (n <= 2) return 1; let re1 = 1; let re2 = 1; let num = 1; for (let i = 2; i < n; i++) { num = re1 + re2; re1 = re2; re2 = num; } return num }
方便理解,也不会出现栈溢出情况