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]
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于