蹦床递归导致“超出最大调用堆栈大小”

我正在研究区块链,并且正在实现一个非常简单的“工作证明”。


工作证明:


export function mineBlock(difficulty: number, block) {

  const prefix = Array(difficulty + 1).join("0");


  function mine(block, difficulty) {

    const nonce = block.nonce + 1;

    const newBlock = {...block, nonce};

    const hash = calculateHash(newBlock);


    return hash.substring(0, difficulty) === prefix

                ? {...newBlock, hash}

                : mine({...newBlock, hash}, difficulty);

  }


  return trampoline(mine(block, difficulty));


}

蹦床:


export function trampoline(func) {

  let result = func;


  while(result && typeof(result) === "function") {

    result = result();

  }


  return result;

}

我仍然收到“超出最大调用堆栈大小”错误,甚至没有蹦床mine功能。


我已经阅读了关于StackOverflow的许多其他问题,以及各种博客上的文章,但是其中许多问题仅关注蹦床或TCE解决问题的“阶乘”或“斐波那契”示例……但事实并非如此。


我正在使用Node 10,所以我不介意这在浏览器中不起作用。


不负相思意
浏览 137回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript