Skip to content

在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,以及可选的正整数 startstep,任务是创建一个等比数列的数组,从给定的正整数开始,直到指定的限制为止。

为了实现这个目标,你可以使用 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]