如何在有限的no之后停止递归方法。 javascript中的递归

时间:2014-10-13 14:37:10

标签: javascript recursion

您好我是javascript的新手。我有一个递归方法,如下所示

function index() {

// done some code here

$.ajax({

       url: 'foo.htm',

       success: function( response ){

           // do something with the response

           index(); // recursion

       }
   });

我想在10次迭代后完全停止递归。我怎样才能做到这一点? 在此先感谢

2 个答案:

答案 0 :(得分:4)

像这样:

function index(c) {
    if (c>10) return;
    // done some code here
    $.ajax({
           url: 'foo.htm',
           success: function( response ){
               // do something with the response
               index((c||0)+1); // recursion
           }
       });
}

您可以将其称为

index();

计数器将在第一次增量时自动初始化。


另一种模式,在调用次数可能发生变化时很有用,是通过递减计数器:

function index(nbIterations) {
    if (!nbIterations) return;
    .ajax({
       url: 'foo.htm',
       success: function( response ){     
           index(nbIterations-1);
        }
    });
}

index(10)

答案 1 :(得分:2)

任何递归函数都需要"终止条件"停止递归通常,格式可能类似于:

functionName() {
    if (terminatingCondition) {
        return;
    }
    performLogic();
    functionName();
}

推断您的代码:

function index() {
    // terminating condition goes here

    // logic goes here
    $.ajax({
       url: 'foo.htm',
       success: function( response ){
           // more logic goes here

           index(); // recursion
       }
    });
}

那是什么条件?什么时候 它会终止?

  

我想在10次迭代后完全停止递归。

然后一个计数器应该做到这一点:

function index(iteration) {
    if (iteration > 10) {
        return;
    }

    // logic goes here
    $.ajax({
       url: 'foo.htm',
       success: function( response ){
           // more logic goes here

           index(iteration + 1); // recursion
       }
    });
}

然后使用初始种子值调用它:

index(1);