在此示例中,您將學(xué)習(xí)查找用戶使用遞歸輸入的非負(fù)整數(shù)的階乘。
要理解此示例,您應(yīng)該了解以下C語(yǔ)言編程主題:
正數(shù)n的階乘由下式給出:
factorial of n (n!) = 1 * 2 * 3 * 4 *... * n
負(fù)數(shù)的階乘不存在。 階乘0為1。
在本示例中,您將學(xué)習(xí)使用遞歸查找數(shù)字的階乘。訪問(wèn)此頁(yè)面以了解如何使用循環(huán)求數(shù)字階乘。
#include<stdio.h>
long int multiplyNumbers(int n);
int main() {
int n;
printf("輸入一個(gè)正整數(shù): ");
scanf("%d",&n);
printf("%d 的階乘 = %ld", n, multiplyNumbers(n));
return 0;
}
long int multiplyNumbers(int n) {
if (n>=1)
return n*multiplyNumbers(n-1);
else
return 1;
}輸出結(jié)果
輸入一個(gè)正整數(shù): 6 6 的階乘 = 720
假設(shè)用戶輸入了6。
最初,從main()調(diào)用multipleNumbers(),并將6作為參數(shù)傳遞。
然后,將5從同一函數(shù)傳遞給multipleNumbers()(遞歸調(diào)用)。 在每個(gè)遞歸調(diào)用中,參數(shù)n的值都減1。
當(dāng)n的值小于1時(shí),沒(méi)有遞歸調(diào)用,并且階乘最終返回給main()函數(shù)。