You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby运行打印数组代码报错undefined method `length' for 1:Integer求助

Ruby数组打印代码故障排查

错误根因

  • 递归传参错误:代码中print_array(arr[i])的入参是数组的单个元素(Integer类型),下一层递归执行arr.length时,Integer类型没有length方法,直接触发NoMethodError报错。
  • 终止逻辑失效:索引i定义在函数内部,每次递归都会重置为0,且初始判断i > arr.length的逻辑永远不成立,就算传参正确也会陷入无限递归。
  • 遍历逻辑错误:i的自增写在递归调用之后,完全不会生效,无法实现数组元素的迭代遍历。

修正后代码

def print_array(arr, i = 0)
  # 递归终止条件:索引超出数组范围直接返回
  return if i >= arr.length
  # 打印当前索引对应的元素
  p arr[i]
  # 传入递增后的索引,递归遍历下一个元素
  print_array(arr, i + 1)
end

调用示例

print_array([1,2,3,4])
# 输出依次为 1 2 3 4

内容的提问来源于stack exchange,提问作者Ahmad Cheers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 20:45:05