[英]Adding elements into array with recursion
我有一个数组函数,用于计算每磅价格与重量的比率。 我想让这个函数递归,或者学习如何。
function ratioArray(pounds,price,arrayLength) {
float[] priceRatio = new float[arrayLength];
for (var i = 0; i < arrayLength; i++) {
priceRatio[i] = (float) price[i] / (float) pounds[i];
}
return priceRatio;
}
我尝试过的:使用其他函数调用尝试使其递归并通过递归单独返回值,然后将它们添加到数组中(而不是返回数组,我会返回价格与英镑的比率并存储它)。 但是,我无法让它递归地工作。
一般的想法是查看长度是否为 0,如果是,则返回一个空数组。 否则,返回一个具有第一个元素的比率的数组,加上任何对ratioArray
的调用与数组的其余部分(即,删除数组的第一个元素)返回。
在 JS 中(所以我可以做一个可运行的例子),它看起来像:
function ratioArray(pounds, price, length) { if (length === 0) return []; const ratio = [price[0] / pounds[0]]; const rest = ratioArray(pounds.slice(1), price.slice(1), length - 1) return ratio.concat(rest) } console.log(ratioArray([1, 2, 3, 4, 5], [100, 190, 270, 340, 400], 5));
或者,如果您想避免大量复制数组:
function ratioArray(pounds, price, length) { if (length === 0) return []; const ratio = price[0] / pounds[0]; const rest = ratioArray(pounds.slice(1), price.slice(1), length - 1); rest.unshift(ratio); return rest; } console.log(ratioArray([1, 2, 3, 4, 5], [100, 190, 270, 340, 400], 5));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.