/*
**test15.cpp : Defines the entry point for the console application.
**系統(tǒng)winXP SP3 32位.
**遞歸函數(shù)
*/
#include "stdafx.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
????int f(int);
????int a = 0;
????printf("a = %d\n",f(a));
????return 0;
}
int f(int a){ ???//遞歸實現(xiàn)從0每次加一直到大于100
????if(a > 100){
????????return a;
????}else{
????????a += 1;
????????printf("a = %d\n",a); ??
????????return f(a);
????}
}
/**********************************
常見死循環(huán)
int f1(){
return f2();
}
int f2(){
return f1();
}
**************************************/
Tips1:遞歸函數(shù)需要有終止條件矛紫,否則會陷入無線調(diào)用自身的循環(huán)之中容客。
Tips2:注意要點选泻。要想實現(xiàn)遞歸的目的宁舰,就要在當前函數(shù)執(zhí)行完畢后不退出,而函數(shù)不退出也就意味著該函數(shù)作用域內(nèi)的臨時變量的存儲不會消失炭序,這也會造成運行時內(nèi)存被大量占據(jù)垒探。
Tips3:其實遞歸就是個壓棧出棧的操作帐要。