我阅读了关于递归斐波那契数列的 Big O 的两篇文章,但仍然没有概念性地理解为什么它是O(2^n)。
这不是此链接的副本。请不要标记为重复。我正在寻找一个概念性的答案。
这是最简单的递归函数之一,我想了解如何看待它并在没有复杂数学和证明的情况下确定大 O。
// O(2^n)
function fiboR(n){
if( n === 0 || n === 1 ){
return n;
} else if ( n >=2 ){
return fiboR(n-1) + fiboR(n-2);
}
}
Run Code Online (Sandbox Code Playgroud)
例如,迭代版本的 Big O 是O(n)。我可以看看,随着 n 的增加,while 循环迭代线性增加。不需要复杂的数学或冗长的证明。
// O(n)
function fibo(n){
let prev0 = 0;
let prev1 = 1;
if( n === 0 || n === 1 ){
return n;
}
while( n-- >= 2){
sum = …Run Code Online (Sandbox Code Playgroud) 我正在阅读护照文档,我注意到有serialize()和deserialize() done()被调用而没有被退回。
但是passport.use(),在回调函数return done()中使用设置新策略时会使用。
这是需要理解还是只是从文档中复制的东西?
http://www.passportjs.org/docs/
从文档:
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
Run Code Online (Sandbox Code Playgroud) 对于迭代版本,它是线性的:
// O(n)
function factorial (n) {
let ret = 1;
for(let i = 2; i <= n; i++) {
ret = ret * i;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
对于递归版本,它似乎也是线性的:
function factorialR (n) {
if( n === 0 || n === 1 ) {
return 1;
} else {
return n * factorialR(n - 1);
}
}
Run Code Online (Sandbox Code Playgroud)
递归版本也是线性的吗?它只是一个额外的函数调用,而不是每个附加值的循环。
我想使用 Performance.now(),如这篇 SO Post 的最佳答案中所示。
但是,它在我的 Replit 或本地节点服务器中不可用。
我必须安装它吗?
我在 Repl.it 上搜索了软件包,结果出现了这个
在 repl.it 中我添加了...
const 性能 = require('性能'); const t0 = 性能.now();
它会自动安装性能,但我仍然收到错误...现在它说 now() 不是一个函数。
我宽松地使用这个术语,因为 JavaScript 中的数组可以如下所示:
let array = [1, 'a', "hello"];
Run Code Online (Sandbox Code Playgroud)
如果我这样做array.push('end')我得到
[1, 'a', "hello", "end"]
Run Code Online (Sandbox Code Playgroud)
JavaScript 中的数组似乎与计算机科学中教授的数组无关,因为所有项目都属于同一类型,这使得通过索引访问变得很容易,因为可以使用简单的数学来确定每个索引在内存中的位置。
我的假设是一个单链表,其中数据是对另一个对象的引用。
如果有人知道 V8 引擎的代码在哪里,那么看到代码就很酷了。