第1個(gè)人10,第2個(gè)比第1個(gè)人大2歲,依次遞推,請(qǐng)用遞歸方式計(jì)算出第8個(gè)人多大?
拿到這個(gè)題目,其實(shí)并不難,等差數(shù)列而已 a=8+2n ,但是如題要求是用遞歸方式計(jì)算;
我們來(lái)看看遞歸的定義是:是將問(wèn)題轉(zhuǎn)化為規(guī)??s小的同類(lèi)問(wèn)題的子問(wèn)題,每一個(gè)子問(wèn)題都用一個(gè)同樣的算法去解決。說(shuō)得簡(jiǎn)單就是在運(yùn)行的過(guò)程中調(diào)用自己。遞歸的特點(diǎn):
1.在函數(shù)過(guò)程中調(diào)用自身。
2.在遞歸過(guò)程中,必須有一個(gè)明確的條件判斷遞歸的結(jié)束,既遞歸出口。
3.遞歸算法簡(jiǎn)潔但效率低,通常不作為推薦算法。
function getAge(index){
if(index==1){
return 10
}else{
return 2+getAge(index-1)
}
}
alert(getAge(8))
這里當(dāng)index!==1的時(shí)候,返回的是2+ getAge(index-1),一直到index=2的時(shí)候返回10,累加之后得到的答案是24