我完全不知道这个问题。基本上,给定数字,返回所需数量最少的硬币加起来给出的数字:
coinsOriginal = [1,5,7,9,11]
如果使用的硬币必须是唯一的,我会尝试递归一样,总计数组,将其向下切1个元素直到零长度,然后递归再次尝试使用混洗数组。 ..
count = 0;
'function recurse (coinsArr) {
if (coinsArr.reduce(total) == goalNumber)
return coinsArr.length; // ie return true
else {
if (coinsArr.length == 0){
newArr = coinsArr.slice(1);
return recurse(newArr);
} else if (count == 1000){
return false
} else {
newArr = yatesfischershuffle(coinsOriginal);
count++;
return recurse(newArr);
}
}
}
然而,问题实际上表明数字可以多次使用。这让我思考循环内循环内的循环。我想过尝试按需递归添加越来越多的循环。我想过尝试一定数量的循环。但是,如果数字是250,那将需要9个循环???
是否需要某种memoization表/对象?有什么提示吗?
使用JavaScript语言,让函数CoinDeterminer(num)获取输入,该输入将是1到250之间的整数,并返回一个整数输出,指定最少的硬币数,添加时,等于输入整数。硬币基于如下系统:有硬币代表整数1,5,7,9和11.所以例如:如果num是16,那么输出应该是2,因为你可以用数字16来实现硬币9和7.如果num是25,那么输出应该是3,因为你可以用11,9和5个硬币或9,9和7个硬币达到25个。