ruby - 为什么在这个算术级数和的代码中需要第三个变量?

标签 ruby algorithm math

为什么我在这段代码中需要一个局部变量result?我想当我尝试仅使用 2 个变量时我遇到了一个无限循环,但我不知道如何在代码中识别这个问题并使用调试来理解这个问题。

# 编写一个方法,它接受一个整数 num 并返回 # 0 到 num 之间的所有整数,直到并包括 num

def sum_nums(num)
  result = 0

  i = 0
  while i <= num
    result += i
    i += 1
  end

  return result
end

最佳答案

因此,为了让这段代码起作用,您需要知道三件事:您要数到的数字 (num)、数字的当前值 (i), 以及从 0 到 i 的当前总和。 result 是跟踪从 0 到 i 的总和的变量。

但是,这并不是编写此方法的非常 ruby​​ 方式。 while 循环适用于您不知道需要循环多少次的情况。在这种情况下,您知道循环次数,因此迭代器更适合此目的。

def sum_nums(num)
  (0..num).reduce(:+)
end

上述方法将返回与您的方法相同的结果。

关于ruby - 为什么在这个算术级数和的代码中需要第三个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39949165/

相关文章:

ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前?

ruby - 这些线程如何工作?

ruby-on-rails - 返回今天和昨天在 ruby​​ on rails 中完成的表列

algorithm - 有没有比Dijkstra算法更好的以事故总数为参数的最短安全路径算法?

opengl - 水平和垂直限制 FOV

c - 模乘法(C 语言)

java - Java 的 StringReader 的 Ruby 等价物是什么?

python - 在 Python 中解析化学公式

algorithm - 决策变量的数量与目标空间维度的关系?

python - 你如何在没有评估的情况下定义长符号表达式的实部/虚部?