2020-04-07
描述
初始化一个包含 start 和 end 在内的指定范围数字的数组,每两项之间的比率为 step。如果 step 等于 1 的话,则返回一个错误。
提示
- 使用
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(
(v, 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]
ME!
链滴