斐波那契數(shù)列 講一下c語言中遞歸函數(shù)的使用方法?
講一下c語言中遞歸函數(shù)的使用方法?遞歸函數(shù)有三個要求:1,遞歸的終點,即遞歸函數(shù)的出口2,連續(xù)遞歸調(diào)用自身3,遞歸函數(shù)的主要內(nèi)容,即遞歸函數(shù)需要做什么PS:3可以放在2的前面或后面,通常1放在前面。另
講一下c語言中遞歸函數(shù)的使用方法?
遞歸函數(shù)有三個要求:
1,遞歸的終點,即遞歸函數(shù)的出口
2,連續(xù)遞歸調(diào)用自身
3,遞歸函數(shù)的主要內(nèi)容,即遞歸函數(shù)需要做什么
PS:3可以放在2的前面或后面,通常1放在前面。另外,2和3可以根據(jù)不同的需要進(jìn)行組合。例如,有時遞歸函數(shù)的主體是返回調(diào)用底層函數(shù)的結(jié)果。
具體示例如下:
void fun(int n){if(n<=0)return//1這是遞歸的終點,即退出fun(n-1)//2,遞歸函數(shù)本身調(diào)用cout<< n<<endl//3遞歸函數(shù)的主要內(nèi)容}
2,3合并case
int fun(int n){if(n<=0)return 0 return fun(n-1)fun(n-2)//2循環(huán)和遞歸的本質(zhì)區(qū)別在于內(nèi)存的使用。遞歸是方法本身。隨著遞歸次數(shù)的增加,內(nèi)存消耗也在增加。當(dāng)我們編寫代碼時,內(nèi)存是一個非常重要的部分。我們盡量減少內(nèi)存的消耗,以免浪費系統(tǒng)資源。循環(huán)占用的內(nèi)存非常小,每個循環(huán)都會釋放之前分配的內(nèi)存,但是很多遞歸函數(shù)不能通過循環(huán)來實現(xiàn),所以我們必須考慮要實現(xiàn)的函數(shù)。如果函數(shù)不能用非遞歸的方法來完成,我們就不會刻意修改它們。
C語言中的循環(huán)與函數(shù)的遞歸調(diào)用有何區(qū)別?
不能有返回值,返回值只是函數(shù)輸出的一個方法
直接或間接調(diào)用自己的函數(shù)是遞歸函數(shù),否則是非遞歸函數(shù)。例如:unsigned fun(unsigned x){if(x==1 | | x==0)return 1 return x*fun(x-1)}的函數(shù)有自己的語句fun(x-1),因此它是一個遞歸函數(shù)。