Tengo una función de matriz que calcula la relación entre el precio y el peso por libra. Deseo hacer que esta función sea recursiva, o aprender a hacerlo.
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; }Lo que he intentado: usar otras llamadas a funciones para intentar hacerlo recursivo y devolver los valores individualmente a través de la recursividad y luego agregarlos a una matriz (en lugar de devolver la matriz, devolvería la relación precio-libra y la almacenaría). Sin embargo, no puedo hacer que funcione recursivamente.
La idea general sería ver si la longitud es 0, si es así, devolver una matriz vacía. De lo contrario, devuelva una matriz con la proporción del primer elemento, más lo que devuelva una llamada a ratioArray con el resto de la matriz (es decir, con el primer elemento de las matrices eliminado).
En JS (para que pueda hacer un ejemplo ejecutable), se vería así:
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));O si quieres evitar copiar tanto la matriz:
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));