猴子吃桃問題 :
猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個,
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃前一天剩下的一半零一個。
到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘多少個桃子?
解: 得出 昨天吃掉得數量 - 1 = 昨天得一半 = 今天得數量 + 1
使用Sql 語句實現:
declare @QtyInDayNow int =1,@QtyInLastDay int ,@Days int = 10, @AllDaysInLast int = 0 print('第'+convert(char(2),@Days)+'天有'+convert(char(5),@QtyInDayNow)+'桃子') while(@Days>1) begin set @QtyInLastDay = @QtyInDayNow + 2 --得到昨天吃掉的數量 set @Days = @Days -1 --時間回到上一天 set @AllDaysInLast = @QtyInDayNow + @QtyInLastDay; --得到上一天的總數量 set @QtyInDayNow = @AllDaysInLast --保存上一天持有數量,用於日期回退 print('第'+convert(char(2),@Days)+'天有'+convert(char(5),@QtyInDayNow)+'桃子,'+ '分一半為'+convert(char(5),@AllDaysInLast/2)+ ',一半多吃一個為'+ convert(char(5),@QtyInLastDay)+',剩余'+convert(char(5),@QtyInLastDay -2) ) end
輸出
第10天有1 桃子
第9 天有4 桃子,分一半為2 ,一半多吃一個為3 ,剩余1
第8 天有10 桃子,分一半為5 ,一半多吃一個為6 ,剩余4
第7 天有22 桃子,分一半為11 ,一半多吃一個為12 ,剩余10
第6 天有46 桃子,分一半為23 ,一半多吃一個為24 ,剩余22
第5 天有94 桃子,分一半為47 ,一半多吃一個為48 ,剩余46
第4 天有190 桃子,分一半為95 ,一半多吃一個為96 ,剩余94
第3 天有382 桃子,分一半為191 ,一半多吃一個為192 ,剩余190
第2 天有766 桃子,分一半為383 ,一半多吃一個為384 ,剩余382
第1 天有1534 桃子,分一半為767 ,一半多吃一個為768 ,剩余766
--轉載請附錄此博客鏈接