?? 例8.7.txt
字號:
例8.7有5個人坐在一起,問第5個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第3個人大2歲。問第3個人,又說比第2個人大2歲。問第2個人,說比第1個人大2歲。最后問第1個人,他說是10歲。請問第5個人多大。顯然,這是一個遞歸問題。要求第5個人的年齡,就必須先知道第4個人的年齡,而第4個人的年齡也不知道,要求第4個人的年齡必須先知道第3個人的年齡,而第3個人的年齡又取決于第2個人的年齡,第2個人的年齡取決于第1個人的年齡。而且每一個人的年齡都比其前1個人的年齡大2。即age(5)=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)=10
可以用式子表述如下:
age(n)=10 (n=1)
age(n-1)+2 (n>1)
可以看到,當(dāng)n>1時,求第n個人的年齡的公式是相同的。因此可以用一個函數(shù)表示上述關(guān)系。圖8.11表示求第5個人年齡的過程。
從圖可知,求解可分成兩個階段:第一階段是“回推”,即將第n個人的年齡表示為第(n-1)個人年齡的函數(shù),而第(n-1)個人的年齡仍然不知道,還要“回推”到第(
n-2)個人的年齡……直到第1個人年齡。此時age(1)已知,不必再向前推了。
然后開始第二階段,采用遞推方法,從第1個人的已知年齡推算出第2個人的年齡(12歲),從第2個人的年齡推算出第3個人的年齡(14歲)……一直推算出第5個人的年齡
(18歲)為止。也就是說,一個遞歸的問題可以分為“回推”和“遞推”兩個階段。要經(jīng)歷許多步才能求出最后的值。顯而易見,如果要求遞歸過程不是無限制進行下去,必須具有一個結(jié)束遞歸過程的條件。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -