首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >奇怪的空?识别行为

奇怪的空?识别行为
EN

Stack Overflow用户
提问于 2017-07-28 23:05:53
回答 1查看 31关注 0票数 0

我正在尝试创建一个方法,通过螺旋式读取2d数组来返回数组。我使用递归,然后希望在传入的参数数组为空时停止它。

代码语言:javascript
运行
复制
@arr = []

def spiral(array)
  array.to_a.empty? ? true :  @arr << array.shift
  spiral(array.transpose.reverse)
end

但是,当在递归行中添加空方法时,它无法识别"[]“是空的,并抛出一个”堆栈级别太深“的错误,我假设它是一个无限循环,因为它没有停止条件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-28 23:11:47

为了停止递归,您的函数需要在达到所需条件时返回(或者至少不再调用自己)。在您的代码中,函数只生成true,但继续执行,在结束时调用自己。

试着做这样的事情:

代码语言:javascript
运行
复制
@arr = []

def spiral(array)
  return @arr.flatten if array.to_a.empty?
  @arr << array.shift
  spiral(array.transpose.reverse)
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45383557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档