小编jen*_*fer的帖子

递归斐波那契的 Big O 的非数学解释是什么?

我阅读了关于递归斐波那契数列的 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)

javascript big-o fibonacci

6
推荐指数
1
解决办法
141
查看次数

done() 与返回 done()

我正在阅读护照文档,我注意到有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)

javascript express passport.js

5
推荐指数
1
解决办法
517
查看次数

阶乘计算的大 O(时间复杂度)是多少?

对于迭代版本,它是线性的:

// 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)

递归版本也是线性的吗?它只是一个额外的函数调用,而不是每个附加值的循环。

javascript big-o time-complexity

4
推荐指数
1
解决办法
934
查看次数

如何使用 Performance.now()?

我想使用 Performance.now(),如这篇 SO Post 的最佳答案中所示。

如何测量函数执行所花费的时间

但是,它在我的 Replit 或本地节点服务器中不可用。

我必须安装它吗?

我在 Repl.it 上搜索了软件包,结果出现了这个

在此输入图像描述

在 repl.it 中我添加了...

const 性能 = require('性能'); const t0 = 性能.now();

它会自动安装性能,但我仍然收到错误...现在它说 now() 不是一个函数。

javascript performance node.js

2
推荐指数
1
解决办法
4551
查看次数

JavaScript 中“数组”是如何实现的?

我宽松地使用这个术语,因为 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 引擎的代码在哪里,那么看到代码就很酷了。

javascript v8 data-structures

2
推荐指数
1
解决办法
1781
查看次数