【发布时间】:2013-06-22 22:57:38
【问题描述】:
我目前正在为 coursera 上提供的启动工程课程做计划 2
我正在使用 Amazon Web 服务和 ubuntu 实例进行编程,但我的编程一直处于挂起状态。我的 node.js 程序可能有问题,但我似乎找不到它。
此程序旨在生成前 100 个用逗号分隔的斐波那契数。
#! /usr/bin/env node
//calculation
var fibonacci = function(n){
if(n < 1){return 0;}
else if(n == 1 || n == 2){return 1;}
else if(n > 2){return fibonacci(n - 1) + fibonacci(n-2);}
};
//put in array
var firstkfib = function(k){
var i;
var arr = [];
for(i = 1; i <= k; i++){
arr.push(fibonacci(i));
}
return arr
};
//print
var format = function(arr){
return arr.join(",");
};
var k = 100;
console.log("firstkfib(" + k +")");
console.log(format(firstkfib(k)));
我得到的唯一输出是
ubuntu@ip-172-31-30-245:~$ node fib.js
firstkfib(100)
然后程序挂起
【问题讨论】:
-
程序没有挂起..你的循环越来越慢
-
挂了多久?我相信这种斐波那契风格有一个 O(n^2) 。所以,对于 100 的 fib,它会在该循环中运行 10000 次。对于 99,它将非常接近另一个 10000,依此类推。
标签: javascript node.js amazon-web-services time-complexity fibonacci