递归方法返回未定义的方法“[]”

我不知道为什么这个递归方法" title="递归方法">递归方法返回NoMethodError: undefined method '[]' for nil:NilClass递归方法返回未定义的方法“[]”

def test_method(a, b) 

(a[0] == b[0] ? 0 : 1) + test_method(a[1..-1], b[1..-1])

end

编辑:我在字符串发送的参数进行比较。

回答:

事实上,在同一时间,它会降低空字符串,然后到零。然后导致NoMethodError:undefined方法'[]'为nil:NilClass。

像这样的事情正在发生:

'ss'[1..-1] => 's' 

'ss'[1..-1][1..-1] => ""

'ss'[1..-1][1..-1][1..-1] => nil

回答:

这是因为您没有检查a和b是否为空数组。曾经有一段时间,这将减少对空数组

打电话之前,你应该写

if not (a.empty? or b.empty?) 

(a[0] == b[0] ? 0 : 1) + test_method(a[1..-1], b[1..-1])

end

回答:

既然你遍历一个更小的阵列/串/不管,你必须考虑达到它的结束。我不知道你要完成什么,但是这至少可以阻止它被炸毁:

def test_method(a, b) 

return 0 if a.nil? || b.nil?

(a[0] == b[0] ? 0 : 1) + test_method(a[1..-1], b[1..-1])

end

以上是 递归方法返回未定义的方法“[]” 的全部内容, 来源链接: utcz.com/qa/260431.html

回到顶部