然后你看代碼:fun(0)==0,fun(1)==1;是告訴你一二項(xiàng)。fun(n)==fun(n-1)+fun(n-2);是告訴你通項(xiàng)公式。那么,你就可以知道任何一項(xiàng)。
新榮網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),新榮網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為新榮上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的新榮做網(wǎng)站的公司定做!
傳遞進(jìn)去的參數(shù)要變化,滿足條件調(diào)用自身,不滿足條件就開(kāi)始一層一層返回。
遞歸函數(shù)一定有個(gè)基本要求,就是肯定會(huì)滿足某種條件,不再調(diào)用自身。(否則就無(wú)限遞歸,直到內(nèi)存溢出)。例如,我們計(jì)算1到100的所有數(shù)相加。
1、一個(gè)遞歸函數(shù)的調(diào)用過(guò)程類似于多個(gè)函數(shù)的嵌套的調(diào)用,只不過(guò)調(diào)用函數(shù)和被調(diào)用函數(shù)是同一個(gè)函數(shù)。為了保證遞歸函數(shù)的正確執(zhí)行,系統(tǒng)需設(shè)立一個(gè)工作棧。
2、首先,遞歸是通過(guò)棧實(shí)現(xiàn)的,若沒(méi)有遇到結(jié)束條件,入棧保存本次調(diào)用的返回地址,局部變量,形式參數(shù)等值。
3、1,遞歸的終止點(diǎn),即遞歸函數(shù)的出口 2,不斷的遞歸調(diào)用自身 3,遞歸函數(shù)主體內(nèi)容,即遞歸函數(shù)需要做的事情 ps:3一般可以放在2的前面或者后面,一般1放最前面。
4、傳遞進(jìn)去的參數(shù)要變化,滿足條件調(diào)用自身,不滿足條件就開(kāi)始一層一層返回。
5、遞歸有一個(gè)堆棧的概念,那就意味著他是一個(gè)反理解的過(guò)程:就象數(shù)學(xué)遞推一樣,你知道第一項(xiàng),第二項(xiàng),又知道通項(xiàng)公式,那你就可以知道任何一項(xiàng)。然后你看代碼:fun(0)==0,fun(1)==1;是告訴你一二項(xiàng)。
1、fun(n)==fun(n-1)+fun(n-2);是告訴你通項(xiàng)公式。那么,你就可以知道任何一項(xiàng)。
2、1,將調(diào)用函數(shù)的上下文入棧;2,調(diào)用被調(diào)用函數(shù);3,被調(diào)換函數(shù)執(zhí)行;4,調(diào)用函數(shù)上下文出棧,繼續(xù)執(zhí)行后繼指令。所以在函數(shù)調(diào)用過(guò)程中原調(diào)用函數(shù)是不會(huì)退出的---即你所說(shuō)的釋放內(nèi)存。
3、在else部分的do while循環(huán)中調(diào)用sub(4)---sub(3)---sub(2)---sub(1)sub(1)第一次返回6,static int i為靜態(tài)變量,會(huì)一直累積。
4、我們從側(cè)面來(lái)討論這個(gè)問(wèn)題。首先,遞歸調(diào)用,就是函數(shù)在運(yùn)行的過(guò)程中,不斷調(diào)用他本身。從而達(dá)到將問(wèn)題的求解放到下一步去做。而在最后的退遞歸的過(guò)程中,完成整個(gè)操作(退遞歸不要求一定理解)既然是函數(shù)調(diào)用他本身。