Ruby中如何生成从n到1的正整数倒序数组?
问题分析与解决方案
你的代码存在几个关键问题:
- 初始化了
reverse_seq数组但未对其进行任何操作 - 对空数组调用
reverse并传入块完全无效,既不会生成元素,也无法利用输入的num参数 - 最后直接返回空数组,完全不符合需求逻辑
以下是几种简洁且符合要求的实现方式:
方式一:使用downto方法(最直观)
def reverse_seq(num) # 先判断num是否大于0,不符合则返回空数组 return [] if num <= 0 num.downto(1).to_a end
num.downto(1)会生成从num递减到1的枚举器,调用to_a即可将其转换为数组。
方式二:利用范围反转
def reverse_seq(num) return [] if num <= 0 (1..num).to_a.reverse end
先创建1到num的数组,再通过reverse方法反转数组,得到从num到1的结果。
方式三:手动循环构建数组
如果想手动实现遍历逻辑,可以这样写:
def reverse_seq(num) return [] if num <= 0 result = [] current = num while current >= 1 result << current current -= 1 end result end
通过循环从num开始递减,逐个将数值添加到结果数组中,直到current变为0时停止循环。
内容的提问来源于stack exchange,提问作者v_programistka
相关产品推荐
相关产品推荐

