使用Javascript的递归

使用Javascript的递归,javascript,function,recursion,Javascript,Function,Recursion,我仍在尝试着围绕递归展开讨论,就在我认为我开始理解它的时候,一个问题出现了,我不知道该怎么办 问题是: 卡特西尔瓦尼亚货币是一件奇怪的事情:他们每种面额都有一枚硬币(包括零!)。Catsylvania中的一台摇摇晃晃的换币机会取下任何值为N的硬币,并返回3个新硬币,分别为N/2、N/3和N/4(四舍五入)。编写一个函数摇摇晃晃的硬币(num)如果您取出所有非零值硬币并不断将它们反馈回机器,直到只剩下零值硬币,则返回剩余硬币的数量 我提出的解决方案(不起作用,无限循环)是: 你们能提供的任何帮助都

我仍在尝试着围绕递归展开讨论,就在我认为我开始理解它的时候,一个问题出现了,我不知道该怎么办

问题是: 卡特西尔瓦尼亚货币是一件奇怪的事情:他们每种面额都有一枚硬币(包括零!)。Catsylvania中的一台摇摇晃晃的换币机会取下任何值为N的硬币,并返回3个新硬币,分别为N/2、N/3和N/4(四舍五入)。

编写一个函数
摇摇晃晃的硬币(num)
如果您取出所有非零值硬币并不断将它们反馈回机器,直到只剩下零值硬币,则返回剩余硬币的数量

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


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

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

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


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

您没有像您的需求状态那样进行取整

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。

输入和预期输出是什么?听起来像是家庭作业问题。递归函数应该始终能够停止递归,或者具有“基本情况”条件。到目前为止,退出递归的唯一方法是当num==0时。考虑在其他情况下,为了使递归结束,您需要做哪些更改。
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));
  }
}