天天看點

遞歸-求階乘定義遞歸滿足三個條件循環和遞歸

定義

  • 一個函數直接或間接的調用自己

遞歸滿足三個條件

  • 遞歸必需有一個明确的終止條件
  • 該函數所處理的資料規模必須在遞減
  • 這個轉化必須是可解的

循環和遞歸

遞歸

  • 易于了解
  • 速度慢
  • 所需存儲空間大(函數調用需要發送形參與實參,還要對調用函數壓棧,這些都需要配置設定記憶體空間)

循環

  • 不易了解
  • 速度快
  • 所需存儲空間小
#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