将for循环转换为递归函数

时间:2014-06-20 15:23:27

标签: javascript for-loop recursion

我有一个for循环,并希望将其转换为递归函数。

我有一个提示,应该弹出每个项目并被解雇,然后再转到列表中的下一个项目。这种行为似乎不适用于正常的for循环。循环在提示甚至显示之前完成,然后只显示一个提示,即使列表中有多个项目应该显示提示。

(我不完全确定它是否适用于递归函数,但从我所看到的它看起来很有希望。如果我错了,那么转换是没有意义的。)

我一直在寻找其他例子,但我似乎无法理解他们的工作原理。

这是我原来的循环:

for(var i = 0;i < items.get_count();i++) {
        var item = items.getItemAtIndex(i);

            //Is the item we're looking at in need of approval?
            if (item.get_item("_ModerationStatus") === 2)
            {
                //Yes, prompt for approval. (code for prompt goes here.)
                //Wait until prompt has received a response before going on next list item. 
            }

            else
            {
                //No, do nothing.
            }
        }   

我的尝试看起来有点难过。我不确定从哪里开始:

function recursiveCheckRequests(i)
        {
            if (i < items.get_count())
            {
                function checkRequest(items, )
                //???
            }

        }
        recursiveCheckRequests(0);

2 个答案:

答案 0 :(得分:1)

您必须从内部调用该函数。

function recursiveCheckRequests(i) {
    var item = items.getItemAtIndex(i);
    //Is the item we're looking at in need of approval?
    if (item.get_item("_ModerationStatus") === 2) {
        //Yes, prompt for approval. (code for prompt goes here.)
        //Wait until prompt has received a response before going on next list item.
    }
    if (i + 1 < items.get_count()) {
        recursiveCheckRequests(i + 1);
    }
}
recursiveCheckRequests(0);

答案 1 :(得分:0)

这就是我要做的事情

   function recursiveCheckRequests(pos,arr,length)
    {
        if (pos === length){
             return true;
         }

            //do something here with the array
         return recursiveCheckRequests(pos+1,length)
   }
    recursiveCheckRequests(0,array,array.length);

这样,函数完全独立于要传递的数组,并且可以指定要执行的迭代的限制。