Ruby实现2的幂次生成方法求助:输入数字生成0到该数的2的幂
修正Ruby生成2的幂方法
你的代码存在两个核心问题:
- 参数
n是单个数字,不能直接调用数组的map方法 2 ** (0..x)写法错误,你把范围对象当作了指数,逻辑完全偏离需求
生成结果数组的版本
如果需要返回包含所有2的幂的数组,修正后的代码如下:
def powers_of_two(n) (0..n).map { |x| 2 ** x } end
调用powers_of_two(4)会返回 [1, 2, 4, 8, 16],对应示例中的数值结果。
输出示例格式字符串的版本
如果需要直接输出示例里的"2^x = 结果"格式,代码可以改成:
def powers_of_two(n) (0..n).each { |x| puts "2^#{x} = #{2 ** x}" } end
调用powers_of_two(4)会直接打印:
2^0 = 1 2^1 = 2 2^2 = 4 2^3 = 8 2^4 = 16
内容的提问来源于stack exchange,提问作者wanderingnowhere
相关产品推荐
相关产品推荐

