我如何在Ruby中更好地编写这个?

时间:2014-10-20 15:28:43

标签: ruby

我是Ruby的新手,我想知道什么是更多的Ruby'编写此代码的方法。我不知道我的语法是否正确。非常感谢您的帮助。

另外,如果我想在Mac终端上运行它,我应该命令' ruby​​ eulerfunction.rb'?

eulerfunction.rb:

def gcd(n1, n2)
  x, y = n1, n2

  if x > y
    #switch them#
    t = x
    x = y
    y = t
  loop
    k = x / y
    r = x % y
    if r == 0
      break
    puts x + " = " + k + "x" + y + " + " + r
    x = y
    y = r
  puts "gcd(" + n1 + "," + n2 + ") = " + y

def eulerf(n)
  count = 0
  for (i = 1; n -1; i++)
    if gcd(n, i) == 1
      count++
  puts "Eulerf(" + n + ") = " + count

2 个答案:

答案 0 :(得分:1)

Ruby有一个gcd方法; Ruby的方式是使用它:

20.gcd(30) #=> 10

答案 1 :(得分:-1)

几点:

  • 没有ruby方式我知道人们会经常使用它,但这不是一个真正的“官方”术语。
  • 话虽如此,我通常在ruby代码上看到的被认为是“好”(非常主观的术语btw)的是明确的变量名称(所以尽量避免像rgcd这样的东西),这清除了代码中的混乱我只知道它们是什么,因为我知道你的代码在做什么,但情况并非总是如此。
  • 学习ruby语法,它不会过于复杂,会为您提供更好的答案。我建议你从这个http://tryruby.org/levels/1/challenges/0
  • 开始

最重要的是,正如评论中提到的那样,关于SO的问题可能会有非常主观的答案,但这些问题不会走得太远。如果你有特定的和可量化的东西,你更有可能得到答案。另外,请努力学习您的代码示例(即学习语法),并对自己和回答您的问题的人非常清楚。