2015-06-23 65 views
1

我有这样的代码:为什么返回跳过三元运算符产生的值?

def FirstFactorial(num) 

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

end 

然而,结果保持返还原物的说法。我怎样才能返回我的三元运算符创建的结果?

+0

你有太多等号..'NUM = 0? 1:num ....' – Buddy

回答

2

它返回的参数,因为你告诉这样做。尝试这个。

def FirstFactorial(num) 

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

end 
+0

谢谢!我一直将括号内的运算符放在括号内。 – Shawn

+0

不客气。如果解决了问题,请随时接受答案。请记住,少喝咖啡,多睡一下:-P – Elyasin

+1

:P我打算去,但它说我不得不等待至少12分钟..嘘!现在5分钟:) – Shawn

1

您需要设置num等于三元运算符的结果。或者像Elyasin的回答那样回报它。

def FirstFactorial(num) 

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

end 

编辑: 虽然,记得在红宝石返回的最后一行的结果,所以你可以只说:

def FirstFactorial(num) 

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

end 
2

只是为succint答案添加尽可能为后人的缘故:

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

这样:

def FirstFactorial(num) 

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

end 
+0

回报应该感到羞耻! – user12341234

+1

啊!简单一点,谢谢你的帮助:) – Shawn

相关问题