0

我只是想创建一个基本的递归函数,一旦达到某个数字就会返回结果。但是我不断收到此错误。有人知道这里有什么问题吗?

这是我的代码:

GLOBAL = {};
GLOBAL.cnt = 0; 

Parse.Cloud.define('recursiveTest', function(request, response)
{       
    GLOBAL.cnt++;

    if(GLOBAL.cnt >= 2) {
        response.success(GLOBAL.cnt);   
    }   

    request = {};

    Parse.Cloud.run('recursiveTest', request, response);        
});

这是完整的错误:

{"code":141,"error":"{\"code\":141,\"message\":\"{\\"code\\":141,\\"message\\":\\ "{\\\\"code\\\\":141,\\\\"消息\\\\":\\\\"{\\\\\\\\"code\\\\\\ \\":141,\\\\\\\\"消息\\\\\\\\":\\\\\\\\"{\\\\\\\\\\\\\\ \\"代码\\\\\\\\\\\\\\\\\\":124,\\\\\\\\\\\\\\\\"消息\\\\\\\\ \\\\\\\\":\\\\\\\\\\\\\\\\\\"对云代码的递归调用太多\\\\\\\\\\\\\\\\ "}\\\\\\\\"}\\\\"}\\"}\"}"}

4

2 回答 2

0

看起来您的函数是无限递归的。也许你想这样做?

Parse.Cloud.define('recursiveTest', function(request, response)
{       
    GLOBAL.cnt++;

    if(GLOBAL.cnt >= 2) {
        // added `return` here
        return response.success(GLOBAL.cnt);   
    }   

    request = {};

    // added `return` here
    return Parse.Cloud.run('recursiveTest', request, response);        
});

在任何情况下,您都必须return在某个时候终止递归,否则该函数将永远运行(或实际上直到您遇到太多递归错误)而不会提供所需的结果。

于 2013-07-22T20:16:49.017 回答
0

我想出了一些解决方法。它至少适用于我的情况:

Parse.Cloud.define('recursiveTest', function(request, response)
{   
    function doRecursive(cnt)
    {               
        cnt++;

        if(cnt >= 2) {
            response.success(cnt);   
        }       
    }   

    doRecursive(0);
});
于 2013-07-22T21:06:34.470 回答