定義
- 一個(gè)函數(shù)直接或間接的調(diào)用自己
遞歸滿足三個(gè)條件
- 遞歸必需有一個(gè)明確的終止條件
- 該函數(shù)所處理的數(shù)據(jù)規(guī)模必須在遞減
- 這個(gè)轉(zhuǎn)化必須是可解的
循環(huán)和遞歸
遞歸
- 易于理解
- 速度慢
- 所需存儲(chǔ)空間大(函數(shù)調(diào)用需要發(fā)送形參與實(shí)參,還要對調(diào)用函數(shù)壓棧迁央,這些都需要分配內(nèi)存空間)
循環(huán)
- 不易理解
- 速度快
- 所需存儲(chǔ)空間小
#include <stdio.h>
#include <stdlib.h>
/**
遞歸求階乘
*/
long factorial(int n){
if(1==n) //遞歸結(jié)束條件
return 1;
else
return factorial(n-1)*n;
}
int main()
{
int n;
printf("請輸入你要求階乘的數(shù):");
scanf("%d",&n);
printf("你所求的階乘是:%ld\n",factorial(n));
return 0;
}
運(yùn)行結(jié)果:
image.png