0

我正在开发 HTML5 和 JS 中的 Scratch 编程游戏。让我们假设存在可以用代码块填充的代码块(精灵)和功能块。并假设我希望它递归地工作,即可以将一个函数放入另一个函数或放入它本身。这个想法是为机器人的运动编程。假设在游戏中我创建了函数 f3(x) 并在其中放入了箭头块。然后我创建函数 f4(x) 并将 f3(x) 和一个箭头放入其中。然后我将 f4(f3(arrow), arrow)-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 中解决它?

谢谢!

4

0 回答 0