繁体   English   中英

使用递归将元素添加到数组中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM