十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
相當(dāng)于循環(huán),要有判斷條件,傳遞進(jìn)去的參數(shù)要變化,滿足條件調(diào)用自身,不滿足條件就開始一層一層返回。簡單例子:
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了昔陽免費建站歡迎大家使用!
int
f(int
i){
int
sum=0;
if(i0)
sum+=f(i-1);
return
sum;
}
main(){
int
a=10;
printf("%d",f(a));
}
程序調(diào)用自身的編程技巧稱為遞歸( recursion)。
一個過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個大型復(fù)雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時,遞歸前進(jìn);當(dāng)邊界條件滿足時,遞歸返回。
注意:
(1) 遞歸就是在過程或函數(shù)里調(diào)用自身;
(2) 在使用遞歸策略時,必須有一個明確的遞歸結(jié)束條件,稱為遞歸出口
假設(shè)n=9
1判斷n=9非0,把n=9壓入棧中,執(zhí)行ttor(4);棧中為9
2判斷n=4非0,把n=4壓入棧中,執(zhí)行ttor(2);棧中為9,4
3判斷n=2非0,把n=2壓入棧中,執(zhí)行ttor(1);棧中為9,4,2
4判斷n=1非0,把n=1壓入棧中,執(zhí)行ttor(0);棧中為9,4,2,1
5判斷n=0不滿足條件,函數(shù)結(jié)束
6從棧中取出n=1,執(zhí)行ttor(1)的剩余部分,輸出1
7從棧中取出n=2,執(zhí)行ttor(2)的剩余部分,輸出0
8從棧中取出n=4,執(zhí)行ttor(4)的剩余部分,輸出0
9從棧中取出n=9,執(zhí)行ttor(9)的剩余部分,輸出1
int main(int argc, char *argv[])
main參數(shù) argc 是保存命令的個數(shù),argv 保存命令
例如 test -a -b -c
test程序啟動時接受了 4個參數(shù)(默認(rèn) test也屬于一個參數(shù) ),個數(shù)保存到argc -a -b -c 保存到argv
遞歸。我覺得你被這個名氣搞暈了而已,其實就很簡單,在某個函數(shù)中再調(diào)用這個函數(shù),就叫遞歸
例如
int test(int a)
{
return test(a+1); //死循環(huán) ,不斷進(jìn)入test函數(shù) a不斷加1。。。。
} //你可以理解為一個for 或者while的另一種形式,反正就是循環(huán),加判斷以停止遞歸調(diào)用