在JavaScript中实现等差和等比数列
等差数列是指任意两个连续的数之间的差都是一个常数的数列。等比数列是指任意两个连续的数之间的比都是一个常数的数列。在JavaScript中,这两种数列都可以很容易地实现。
等差数列
给定一个正整数 n
和一个正限制 lim
,任务是创建一个等差数列的数组,从给定的正整数开始,直到指定的限制为止。
为了实现这个目标,你可以使用 Array.from()
来创建一个所需长度为 lim / n
的数组。然后,使用一个 map 函数作为第二个参数,将其填充为给定范围内的所需值。
const arithmeticProgression = (n, lim) =>
Array.from({ length: Math.ceil(lim / n) }, (_, i) => (i + 1) * n );
arithmeticProgression(5, 25); // [5, 10, 15, 20, 25]
等比数列
给定一个正整数 end
,以及可选的正整数 start
和 step
,任务是创建一个等比数列的数组,从给定的正整数开始,直到指定的限制为止。
为了实现这个目标,你可以使用 Array.from()
、Math.log()
和 Math.floor()
来创建一个所需长度的数组。然后,使用 Array.prototype.map()
来填充它,以在给定范围内获得所需的值。省略第二个参数 start
,将使用默认值 1
。省略第三个参数 step
,将使用默认值 2
。
const geometricProgression = (end, start = 1, step = 2) =>
Array.from({
length: Math.floor(Math.log(end / start) / Math.log(step)) + 1,
}).map((_, i) => start * step ** i);
geometricProgression(256); // [1, 2, 4, 8, 16, 32, 64, 128, 256]
geometricProgression(256, 3); // [3, 6, 12, 24, 48, 96, 192]
geometricProgression(256, 1, 4); // [1, 4, 16, 64, 256]