为什么返回跳过我的三元运算符中产生的值?

时间:2015-06-23 20:58:57

标签: ruby operator-keyword ternary

我有这段代码:

def FirstFactorial(num)

  num == 0 ? 1 : num * FirstFactorial(num - 1)
  return num

end

但是,结果会一直返回原始参数。如何返回由我的三元运算符创建的结果?

3 个答案:

答案 0 :(得分:2)

它返回参数,因为你被告知要这样做。试试这个。

def FirstFactorial(num)

  return (num == 0 ? 1 : num * FirstFactorial(num - 1))

end

答案 1 :(得分:2)

为后人添加尽可能简单的答案:

Ruby在方法声明的最后一行使用隐式返回。

因此:

def FirstFactorial(num)

  num == 0 ? 1 : num * FirstFactorial(num - 1)

end

答案 2 :(得分:1)

您需要将num设置为等于三元运算符的结果。或者按照Elyasin的回答再回来。

def FirstFactorial(num)

  num = num == 0 ? 1 : num * FirstFactorial(num - 1)
  return num

end

编辑: 虽然,请记住,在ruby中返回最后一行的结果,所以你可以说:

def FirstFactorial(num)

  num == 0 ? 1 : num * FirstFactorial(num - 1)

end