2015-06-23 61 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

相關問題