在此程序中,您將學(xué)習(xí)使用Java中的遞歸函數(shù)查找并顯示數(shù)字的階乘。
正數(shù)n的階乘由下式給出:
factorial of n (n!) = 1 * 2 * 3 * 4 * ... * n
負(fù)數(shù)的階乘不存在。0的階乘是1。
在本示例中,您將學(xué)習(xí)使用遞歸查找數(shù)字的階乘。訪問此頁面以了解如何使用循環(huán)查找數(shù)字的階乘。
public class Factorial {
public static void main(String[] args) {
int num = 6;
long factorial = multiplyNumbers(num);
System.out.println("" + num + "的階乘 = " + factorial);
}
public static long multiplyNumbers(int num)
{
if (num >= 1)
return num * multiplyNumbers(num - 1);
else
return 1;
}
}運(yùn)行該程序時(shí),輸出為:
6的階乘 = 720
最初,從main()函數(shù)中調(diào)用multiplyNumbers(),并以6作為參數(shù)傳遞。
因?yàn)?大于或等于1,所以6乘以了multiplyNumbers()的結(jié)果,其中傳遞了5 (num -1)。因?yàn)樗菑耐粋€(gè)函數(shù)中調(diào)用的,所以它是一個(gè)遞歸調(diào)用。
在每次遞歸調(diào)用中,參數(shù)num的值減少1,直到num小于1。
當(dāng)值num小于1時(shí),將沒有遞歸調(diào)用。
每個(gè)遞歸調(diào)用都會(huì)返回給我們:
6 * 5 * 4 * 3 * 2 * 1 * 1 (for 0) = 720