我需要帮助完成这项任务。我已经尝试了几种方式np。我使用了“typeof fun.tab ==='undefined'”。任何的想法?
修改递归跟随的定义,以便在计算任何k< = n值fun(k)的fun(n)时恰好计算一次。当然,功能 是保持纯粹的递归(不使用循环)。
我们不能在环境中引入“外部/全局”,没有新的变量。
var fun = function (arg) {
/*some code*/
if(arg<=1){
return 1;
else {
return fun(n-1) + fun(n-2);
}
/*some code*/
}
我试试这个......
var fun = function (arg) {
console.log(arg);
var n = arg;
if (typeof tab === 'undefined') {
var tab = [];
}
if(this in tab) {
return 1;
} else {
tab[this] = this;
if(arg<=1){
return 1;
} else {
return fun(n-1) + fun(n-2);
}
}
}
fun(10);
它不起作用; /
答案 0 :(得分:0)
是的,最后我这样做;-) ITS 10 9 8 7 6 5 4 3 2 1 0,感谢plalx。你是伟大的人类; p
var fun = function (arg) {
var n = arg;
console.log(n);
if(typeof this.cache === 'undefined') {
this.cache = [];
}
if (typeof this.cache[n - 1] === 'undefined' && typeof this.cache[n - 2] === 'undefined') {
this.cache[n - 1] = arg;
this.cache[n - 2] = arg;
if(arg<=1){
return 1;
} else {
return fun(n-1) + fun(n-2);
}
} else {
return 1;
}
}