使用 Javascript 递归
Recursion using Javascript
我仍在尝试围绕递归展开思考,就在我认为我开始理解它时,问题出现了,我不知道该怎么做。
问题是:
Catsylvanian 货币是一件奇怪的东西:每种面额(包括零!)都有一枚硬币。 Catsylvania 的一台摇摇欲坠的零钱机可以取出任何价值 N 的硬币和 returns 3 个新硬币,价值分别为 N/2、N/3 和 N/4(向下舍入)。
写一个函数 wonkyCoins(num)
如果你拿走所有非零硬币并继续将它们送回机器直到你只剩下 returns 你剩下的硬币数量零值硬币。
我想到的解决办法(不行,死循环)是:
function wonkyCoins(num){
if (num == 0){
return 1;
}
else {
return (wonkyCoins(num/4) + wonkyCoins(num/3) + wonkyCoins(num/2));
}
}
你们能提供的任何帮助都会很棒!
你的解决方案非常接近,除了 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。
我仍在尝试围绕递归展开思考,就在我认为我开始理解它时,问题出现了,我不知道该怎么做。
问题是:
Catsylvanian 货币是一件奇怪的东西:每种面额(包括零!)都有一枚硬币。 Catsylvania 的一台摇摇欲坠的零钱机可以取出任何价值 N 的硬币和 returns 3 个新硬币,价值分别为 N/2、N/3 和 N/4(向下舍入)。
写一个函数 wonkyCoins(num)
如果你拿走所有非零硬币并继续将它们送回机器直到你只剩下 returns 你剩下的硬币数量零值硬币。
我想到的解决办法(不行,死循环)是:
function wonkyCoins(num){
if (num == 0){
return 1;
}
else {
return (wonkyCoins(num/4) + wonkyCoins(num/3) + wonkyCoins(num/2));
}
}
你们能提供的任何帮助都会很棒!
你的解决方案非常接近,除了 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。