
TQC+ 物件導向程式語言 Java 6 402 尾端遞迴階乘計算
題目說明:
請開啟檔案 JPD04.java,依下列題意完成作答。將 JPD04.java 內的 class JPD04 修改為 class JPA04,檔案另存成 JPA04.java,並編譯為 JPA04.class。
設計說明:
(1) 尾端遞迴程式設計的特性是以另外傳入的參數來累計遞迴的答案。
(2) 請寫一個程式持續輸入一個數 n,請個別使用尾端遞迴程式設計及迴圈,計算 n 的階乘,直到 n 輸入的數值是 999 為止。
(3) 程式執行時,顯示【Input n (0 <= n <= 16):】要求輸入數值。
(4) 顯示如執行結果參考畫面。
執行結果參考畫面:

程式碼:
import java.util.Scanner;
public class JPA04 {
static Scanner keyboard = new Scanner(System.in);
public static void main(String args[]) {
int n;
do {
System.out.print("Input n (0 <= n <= 16):");
n = keyboard.nextInt();
if(n >= 0 && n <= 16) {
System.out.printf("%d 的階乘(尾端遞迴) = %d\n", n,factorial(n, 1));
System.out.printf("%d 的階乘(迴圈) = %d\n", n,factorialLoop(n));
}
} while(n != 999);
}
static int factorial(int n, int ans) {
if(n == 1)
return ans;
else
return factorial(n - 1, n * ans);
}
static int factorialLoop(int n) {
int ans = 1;
for(int i = 2;i <= n;i++)
ans *= i;
return ans;
}
}
TQC+ 物件導向程式語言 Java 6 第四類:遞迴程式設計
如果覺得文章內容還不錯的話,麻煩請幫我點個讚!感謝
可以多點幾次喔~~
第一次點讚需使用 Google 或 Facebook 帳號註冊


2 則留言
自動引用通知:
SAEBA RYO
Test