没有全局变量的递归,只循环一个arg

时间:2014-08-14 20:29:48

标签: javascript recursion

我需要帮助完成这项任务。我已经尝试了几种方式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);

它不起作用; /

1 个答案:

答案 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;
            }


    }