如何在没有TCO的情况下处理Javascript中的递归挑战?

时间:2016-05-23 07:52:05

标签: javascript html5 mit-scratch

我正在使用HTML5和JS的Scratch编程游戏。让我们假设有代码块(精灵)和功能块,可以用代码块填充。并假设我希望它以递归方式工作,即可以将函数放入另一个函数或自身。我们的想法是为机器人的运动编程。假设,在游戏中我创建了函数f3(x)并在其中放入了en arrow-block。然后我创建函数f4(x)并将f3(x)和箭头放入其中。然后我在命令行中输入f4(f3(箭头),箭头)-block。然后我写了一些递归函数。

RecursiveFunc: function(codeBlock) {
    For(i=0;i<commandoLine;i++){
        if(inArray(block, functions)===true){
            RecursiveFunc(commandoLine[i])}
        else{
            executeArray.push(codeBlock)
        }
    }
}

真正发生的是当函数读取f4-block时,然后检测f3并执行自身并读取f3中的箭头,然后它不会继续读取f4中的箭头(f3,箭头),如它会像那样工作,例如,在Python中。这是一种TCO缺席问题吗?如何在JavaScript中解决它?

谢谢!

0 个答案:

没有答案