ruby 2的倍数次幂

bbmckpt7  于 2023-02-12  发布在  Ruby
关注(0)|答案(3)|浏览(134)

我试着创建一个方法,它接受一个数字,然后把这个数字和0之间的所有数字作为数字2的指数。

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 =十六

这是我所能得到的......
二的p次幂(4)
一、二、四、八、十六
结束
我相信我的尝试已经不远了。

3zwtqj6y

3zwtqj6y1#

例如,像这样:

def power_of_two(n) = (0..n).each { puts 2 ** _1 }     
power_of_two(4)
#=> 1
    2                                       
    4                                       
    8                                       
    16
i5desfxk

i5desfxk2#

您可以构建一个枚举器,通过Enumerator.produce生成数字:

powers = Enumerator.produce(1) { |i| i * 2 }

powers.take(5)
#=>[1, 2, 4, 8, 16]

该块从1开始,基于前一个数字生成每个数字。
这同样适用于位移位:

powers = Enumerator.produce(1) { |i| i << 1 }

powers.take(5)
#=>[1, 2, 4, 8, 16]
yacmzcpb

yacmzcpb3#

当我们在处理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

相关问题