在此示例中,您將學(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ù)。