尝试与Ruby

时间:2017-01-31 19:31:40

标签: ruby

本说明如下:

  

NUMBER CRUNCHER

     

编写一个以数字作为参数的方法   如果数量大于20   从数字倒数2   如果数量小于20   从数字开始倒数1   在数字减少到0时显示数字。

我写过这个,但它并没有按照预期做到。有什么帮助吗?

def num_cruncher(num)
count = num

until count == 0 do
    if num > 20
        puts count - 2
    else
        puts "#{count}"
    end
        count -= 1
  end
end

2 个答案:

答案 0 :(得分:2)

这是您的代码,尽可能少的更改:

def num_cruncher(num)
  count = num

  until count < 0 do
    puts count
    if num > 20
      count -= 2
    else
      count -= 1
    end
  end
end

num_cruncher(10)
# 10
# 9
# 8
# 7
# 6
# 5
# 4
# 3
# 2
# 1
# 0

num_cruncher(21)
# 21
# 19
# 17
# 15
# 13
# 11
# 9
# 7
# 5
# 3
# 1

通过在循环外部提取if语句,代码变得更短:

def num_cruncher(num)
  if num > 20
    step = 2
  else
    step = 1
  end

  until num < 0 do
    puts num
    num -= step
  end
end

答案 1 :(得分:1)

您可以在此处使用Numeric#step。像这样:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});