我有這個因子應用程序,應該是無限的,如果答案總是"y"
。紅寶石:函數/方法位置
def continue?
answer = gets
if answer.downcase == "y"
main
elsif answer.downcase == "n"
exit
else
"This means n to me. Follow the rules next time. Bye."
end
end
def main
p "Enter any Integer"
out = gets
num = out.to_i
def factorial(num)
sum = num
(num-1).times {sum = sum * (num - 1); num = num-1}
sum
end
p factorial(num)
p "Do you want another number"
continue?
end
main
起初,#繼續嗎?是在應用程序的結尾,但是當我在#main中調用繼續時,我會爲不存在的Method發生錯誤。所以,我感動了#繼續?到頂端,但現在我不能再次調用#main,因爲同樣的方法錯誤。我可以把#繼續?在#main方法裏面,但我不認爲它會做很多。處理這種情況有沒有更好的方法?
如果我的代碼關閉或者我的練習不是最好的,請讓我知道。我會使用#inject進行階乘,但是我正在使用ruby 1.8.5,所以我必須盡我所能。
是的。這更有意義。謝謝你爲我清理東西。我從來沒有真正想過它記憶的方式,因爲它只是一小段片段。 – FiberBro
很好的答案,但我會質疑你的'begin ... end'塊。爲什麼不只是「繼續? ...結束? –
@ZachKemp那麼,假設代碼應該至少執行一次,之後用戶可以決定再次運行它是公平的。在這種情況下,「開始......結束而繼續?」比「持續」更有意義? ...結束。在這種情況下,在開始之前要求繼續下去會很奇怪。 –