2014-10-08 24 views
0

一名男子開始一次汽車旅行,以訪問他的公婆。總距離爲60英里,他以每小時60英里的速度起步。駕駛完整1英里後,他失去了對旅程的熱情,並(瞬間)減慢到每小時59英里。再行駛一英里後,他再次減速到每小時58英里。這種情況會持續下去,每旅行一英里每小時會逐漸減速1英里,直到旅程結束。我應該使用遞歸來回答這個問題而不是循環嗎?

現在我不知道該怎麼辦,我相信,

我發現他對每英里的行駛速度,並計算需要多長時間他行走1英里,然後我添加所有的價值觀都能達到答案。

我試圖寫一個方程來做到這一點,但我認爲循環或遞歸會更簡單。

有人可以指出我正確的方向,使這個程序給我正確的答案。在紙上,我可以輕鬆地添加並獲得4.6小時(正確的答案),但它只是有點難以編寫遞歸程序(或者我應該使用循環?)

+0

爲您的情況使用循環。 – vikeng21 2014-10-08 04:13:45

回答

0

對於這個確切的問題,沒有很多複雜性和資源問題。您可以使用任一解決方案。我猜在這種情況下循環會更簡單。據說遞歸也不會很複雜。

0

遞歸這將是:

public static double run(double miles, double speed){ 
    if(miles <= 1){ 
     return 1/speed; 
    } 
    return 1/speed + run(miles-1, speed-1); 
} 

這會給你的小時數(double類型),它需要(因爲英里在英里單位,並且在英里每小時的速度)

修改相應的數據類型,你想

,如果您使用的三元運營商喜歡一個更小的代碼塊:

public static double run(double miles, double speed){ 
    return 1/speed + (miles <= 1 ? 0 : run(miles-1, speed-1)); 
} 
相關問題