定義
- 一個函數直接或間接的調用自己
遞歸滿足三個條件
- 遞歸必需有一個明确的終止條件
- 該函數所處理的資料規模必須在遞減
- 這個轉化必須是可解的
循環和遞歸
遞歸
- 易于了解
- 速度慢
- 所需存儲空間大(函數調用需要發送形參與實參,還要對調用函數壓棧,這些都需要配置設定記憶體空間)
循環
- 不易了解
- 速度快
- 所需存儲空間小
#include <stdio.h>
#include <stdlib.h>
/**
遞歸求階乘
*/
long factorial(int n){
if(1==n) //遞歸結束條件
return 1;
else
return factorial(n-1)*n;
}
int main()
{
int n;
printf("請輸入你要求階乘的數:");
scanf("%d",&n);
printf("你所求的階乘是:%ld\n",factorial(n));
return 0;
}
運作結果:
image.png