使用 Javascript 的递归

Recursion using Javascript

本文关键字:递归 Javascript 使用      更新时间:2023-09-26

我仍在尝试围绕递归进行包装,就在我认为我开始理解它时,一个问题出现了,我不知道该怎么办。

问题是:

Catsylvanian的钱是一件奇怪的事情:他们每个面额都有一枚硬币(包括零!Catsylvania的一台摇摇欲坠的零钱机会取出任何价值N的硬币,并返回3个新硬币,价值分别为N/2,N/3和N/4(向下舍入)。

编写一个函数wonkyCoins(num),如果您将所有非零硬币都送回机器,并不断将它们送回机器,直到只剩下零价值硬币,则返回您剩下的硬币数量。

我想出的解决方案(不起作用,无限循环)是:

function wonkyCoins(num){
  if (num == 0){
    return 1;
  }
  else {
    return (wonkyCoins(num/4) + wonkyCoins(num/3) + wonkyCoins(num/2));
  }
}

你们能提供的任何帮助都会很棒!

您没有像您的要求状态那样向下舍入!

function wonkyCoins(num){
  num = Math.floor(num); //round num down to the nearest integer
  if (num == 0){
    return 1;
  }
  else {
    return (wonkyCoins(num/4) + wonkyCoins(num/3) + wonkyCoins(num/2));
  }
}

当您不向下舍入时,整数除法会为您提供浮点数,因此它们永远不会等于 0。

你的解决方案非常接近,除了JavaScript将这些数字转换为浮点表示(因此你永远不会真正达到零)

解决此问题的一种可能方法是在检查零之前强制 num 为整数值

另一种可能的解决方案是检查<0.5 或其他阈值。