您現在的位置是:首頁 > 手機遊戲首頁手機遊戲

經典程式設計基礎題丨猴子吃桃的兩種方法

簡介假設猴子第一天摘了 n1 個桃子,吃一半,再多吃一個,第二天就剩餘了 n2 個桃子

樹的層次序列是什麼

本篇文章和大家分享一道程式設計基礎的練習題——猴子吃桃。

經典程式設計基礎題丨猴子吃桃的兩種方法

題目

有一隻猴子,第一天摘了若干個桃子,吃了一半,因為桃子太好吃了,於是就多吃了一個;第二天,猴子又吃了第一天剩下的一半,又饞了多吃一個;第三天,吃了第二天剩下的一半,也多吃了一個……如此往復,第十天想吃的時候發現只剩下了一個桃子。

求:猴子第一天共摘了多少個桃子。

首先,根據題目給出的條件,我們可以得到以下這些關係式。

假設猴子第一天摘了 n1 個桃子,吃一半,再多吃一個,第二天就剩餘了 n2 個桃子。可以得到關係式:n2 = n1 / 2 - 1。

第三天和第二天的數量關係為:n3 = n2 / 2 - 1。

以此類推,可得出第十天和第九的數量關係為 n10 = n9 / 2 - 1 = 1。

就可以計算出,n9=4,也就是第九天有 4 個桃子。

反推回去,就能計算出第一天的桃子數量。

解題方式

接下來,就是要用計算機思維來處理這一過程。

看到這個過程,第一個反應就是用遞迴。其滿足了遞迴所必需具備的兩個條件,

擁有限制條件

每一次呼叫都會越接近限制條件

限制條件為:當天數為 10 的時候,桃子數量就只剩下 1 個。

呼叫關係為:f(n) = ((fn+1)+1) * 2。

程式碼例項:

經典程式設計基礎題丨猴子吃桃的兩種方法

執行結果:

經典程式設計基礎題丨猴子吃桃的兩種方法

雖然可以極少量的程式碼解決一個複雜的大型問題,但也是一個極其耗費記憶體的一個方法。

不過一般能用遞迴的地方,往往也是能用迴圈迭代解決的。

程式碼例項:

經典程式設計基礎題丨猴子吃桃的兩種方法

執行結果:

經典程式設計基礎題丨猴子吃桃的兩種方法

最後

關於猴子吃桃問題就說到這裡了,文章中若有存在不當之處或者錯誤之處,歡迎大家指出問題,不勝感激。

如果您覺得本篇文章對您有用,或者還不錯的話,點個贊支援一下!當然,要是有個分享、收藏,那就更好了!(*= v=*)

Top