【Python練習題 023】 有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後 問第一個人,他說是10歲。請問第五個人多大? 這題真是……用心算就能算出來好嗎?好吧,應該又是要訓練遞 ...
【Python練習題 023】 有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後 問第一個人,他說是10歲。請問第五個人多大?
-----------------------------------------------------
這題真是……用心算就能算出來好嗎?好吧,應該又是要訓練遞歸函數,最近這幾題總是跟遞歸糾纏不清。不過,似乎慢慢理解了遞歸函數的寫法了。本題代碼如下:
def f(n): if n == 1: return 10 else: return f(n-1)+2 print(f(5))
輸出結果如下:
18
其實也不難理解,前一個人比後一個人大2歲,用函數式表示就是:f(n) = f(n-1) + 2。嗯嗯,我好像大概能看懂遞歸了,耶~
照規矩,同時把非遞歸的代碼寫出來:
a = 10 for i in range(4): a += 2 print(a)
學到現在,對 for 迴圈似乎已經輕車熟路了。做題果然是有效果的~~~
++++++++++++++++++++++++++++++++++++++