首先要理解遞歸的概念,先遞后歸
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站制作、濟(jì)南網(wǎng)絡(luò)推廣、小程序開發(fā)、濟(jì)南網(wǎng)絡(luò)營銷、濟(jì)南企業(yè)策劃、濟(jì)南品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供濟(jì)南建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:chinadenli.net
開始遞
get(1) n=1不成立,執(zhí)行else
get(2) n=2不成立,執(zhí)行else
get(3) n=3不成立,執(zhí)行else
get(4) n=4不成立,執(zhí)行else
get(5) n=5不成立,執(zhí)行else
get(6) n=6不成立, 執(zhí)行else
get(7) n=7不成立, 執(zhí)行else
get(8) n=8不成立, 執(zhí)行else
get(9) n=9不成立 執(zhí)行else
get(10) n=10成立,返回值1
開始?xì)w!
get(10) num=1
get(9) get(n+1)*2+2 = 1*2+2=4 //這里說下為什么不在遞的時(shí)候計(jì)算else呢?因?yàn)樵谶f的時(shí)候我們并不知道他們上一次的值,所以是沒辦法計(jì)算的,這里get(n+1)已經(jīng)知道了上一次的值get(10)是1。
get(8) get(n+1)*2+2 = 4*2+2 =10
get(7) get(n+1)*2+2 = 10*2+2 = 22
get(6) get(n+1)*2+2 = 22*2+2 = 46
get(5) get(n+1)*2+2 = 46*2+2 = 94
get(4) get(n+1)*2+2 = 94*2+2 = 190
get(3) get(n+1)*2+2 = 190*2+2 = 382
get(2) get(n+1)*2+2 = 382*2+2 = 766
get(1) get(n+1)*2+2 = 766*2+2 = 1534
至此遞歸條件結(jié)束
先看看下面的例子:
void fun(int i)
{
if (i0)
{
fun(i/2);
}
printf("%d\n",i);
}
intmain()
{
fun(10);
return 0;
} 展開后如下:好理解了吧void fun(int i)
{
if (i0)
{
//fun(i/2);
if(i/20)
{
if(i/40)
{
…
}
printf("%d\n",i/4);
}
printf("%d\n",i/2);
}
printf("%d\n",i);
}
這樣一展開,是不是清晰多了
調(diào)用過程就是自己調(diào)用自己,直到滿足退出條件,這個(gè)很重要
比如要求5的階乘,先要求4的階乘,接著求3的階乘,。。。最后當(dāng)n=1時(shí),直接return 1
也就結(jié)束了遞歸。其實(shí)很好理解的。。
遞歸函數(shù)有三點(diǎn)要求:
1,遞歸的終止點(diǎn),即遞歸函數(shù)的出口
2,不斷的遞歸調(diào)用自身
3,遞歸函數(shù)主體內(nèi)容,即遞歸函數(shù)需要做的事情
ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根據(jù)不同的需要合并,比如,有時(shí)候遞歸函數(shù)的主體就是返回調(diào)用下層函數(shù)所得到的結(jié)果。
具體例子如下:
void?fun(int?n)
{
if(n=0)?return;???//1?這是遞歸的終點(diǎn),即出口
fun(n-1);????????//2、遞歸函數(shù)自身的調(diào)用
coutnendl;?????//3?遞歸函數(shù)的主體內(nèi)容
}
2,3合并的情況
int?fun(int?n)
{
if(n=0)?return?0;
return?fun(n-1)+fun(n-2);??//2?3合并
}
直接或間接調(diào)用自已的函數(shù)就是遞歸函數(shù),否則為非遞歸函數(shù)。如:
unsigned?fun(unsigned?x){
if(x==1?||?x==0)
return?1;
return?x*fun(x-1);
}
這個(gè)函數(shù)的體中出現(xiàn)了調(diào)用自己的語句fun(x-1);,所以是遞歸函數(shù)。
當(dāng)前題目:c語言中的歸函數(shù),c語言定義遞歸函數(shù)
瀏覽路徑:http://chinadenli.net/article34/heegpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、ChatGPT、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)