ruby - 为什么我不能将函数参数压入数组?

标签 ruby function collatz

我试图找到这个 collat​​z 序列的长度。如果我改变 test_array << numberputs number ,我能够输出序列中的每个数字,但由于某种原因,我无法让这个函数在将新值返回到函数之前将数字插入数组。任何帮助将不胜感激。

test_array = []

def collatz_sequence(number)
  return number if number==1
  if number%2==0
    test_array << number
    return collatz_sequence(number/2)
  else
    test_array << number
    return collatz_sequence(3*number+1)

 end
end

puts collatz_sequence(13)

最佳答案

test_array = [] 超出范围。 def 创建一个新范围,因此您无法从该方法中访问 test_array 的值。

解决此问题的一种方法是使 test_array 成为实例变量:@test_array

关于ruby - 为什么我不能将函数参数压入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18041554/

相关文章:

c# - (num % 2) 可以得到 0、1 等等?在 C#

C++ Collat​​z 猜想优化

ruby-on-rails - rails : How to insert a text_field without a form just to test the layout?

ruby-on-rails - Foreman/Puma 未使用开发环境中的指定端口

JavaScript - getElementsByClassName 适用于一个函数,但不适用于另一个函数

C:将具有数组的指针传递给函数时,会出现运行时错误。为什么?

java - Collat​​z 猜想方法 - Java

ruby-on-rails - 如何使用 permit 或 require 过滤 params hash 中的键?

ruby-on-rails - Nginx 在子 uri 上托管单个 Rails 应用程序

arrays - Bash 将数组传递给函数插入空元素