题目
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你 n,请计算 F(n) 。
题解
暴力递归,存在大量重复计算,不明白的往下翻看一下下面的干货题解就行了。
var fib = function (N) {
if (N == 0) return 0;
if (N == 1) return 1;
return fib(N - 1) + fib(N - 2);
};
降维打击,解决重复计算问题,不明白的往下翻看一下下面的干货题解就行了。
/**
* @param {number} N
* @return {number}
*/
var fib = function (N) {
var dp = [0, 1, 1];
for (var i = 3; i <= N; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[N];
};
再次降维,优化,不明白的往下翻看一下下面的干货题解就行了。
var fib = function (N) {
if (N == 0) return 0;
if (N == 2 || N == 1) return 1;
var prev = 1,
curr = 1;
for (var i = 3; i <= N; i++) {
var sum = prev + curr;
prev = curr;
curr = sum;
}
return curr;
};
干货题解
上一篇
JavaScript 基础知识笔记
这篇笔记记录了巩固 JavaScript 过程中遇到的基础知识点,包括 null 和 undefined 的区别、数据类型转换、bind、apply、call 方法的使用、AMD、CMD、UMD 和 CommonJS 模块规范的比较,new 操作符的实现原理,instanceof 操作符的实现原理,0.1+0.2!=0.3 的原因及解决方法,宏任务和微任务的区别,原型链的解释以及面向对象编程的相关知识。
下一篇
将 Vue 组件挂载到 shadowRoot
本文介绍如何在 Chrome 扩展程序中使用 shadowRoot 隔离 DOM,并讲解如何将 Vue 组件挂载到 shadowRoot 中的元素上,从而避免插件与页面 DOM 产生冲突。