我试着创建一个方法,它接受一个数字,然后把这个数字和0之间的所有数字作为数字2的指数。
2^0 = 12^1 = 22^2 = 42^3 = 82^4 =十六
这是我所能得到的......二的p次幂(4)一、二、四、八、十六结束我相信我的尝试已经不远了。
3zwtqj6y1#
例如,像这样:
def power_of_two(n) = (0..n).each { puts 2 ** _1 } power_of_two(4) #=> 1 2 4 8 16
i5desfxk2#
您可以构建一个枚举器,通过Enumerator.produce生成数字:
Enumerator.produce
powers = Enumerator.produce(1) { |i| i * 2 } powers.take(5) #=>[1, 2, 4, 8, 16]
该块从1开始,基于前一个数字生成每个数字。这同样适用于位移位:
1
powers = Enumerator.produce(1) { |i| i << 1 } powers.take(5) #=>[1, 2, 4, 8, 16]
yacmzcpb3#
当我们在处理2的幂时,试试这种移位方法(我假设给定的n是非负的)。
2
n
def po2(n) (0..n).each { |i| puts 1 << i } end
po2(7) 1 2 4 8 16 32 64 128
参见整数#〈〈,可能还有this tutorial。
3条答案
按热度按时间3zwtqj6y1#
例如,像这样:
i5desfxk2#
您可以构建一个枚举器,通过
Enumerator.produce
生成数字:该块从
1
开始,基于前一个数字生成每个数字。这同样适用于位移位:
yacmzcpb3#
当我们在处理
2
的幂时,试试这种移位方法(我假设给定的n
是非负的)。参见整数#〈〈,可能还有this tutorial。