阿摩線上測驗 登入

申論題資訊

試卷:104年 - 104年專業職一程式設計資訊系統開發與維護概要考古題#27923
科目:資訊系統開發與維護概要
年份:104年
排序:0

題組內容

數學運算中階乘定義為,其中N 為正整數。

申論題內容

(二)請以C 語言設計一程式內含主程式(包含由鍵盤輸入N 與螢幕輸出結果)與一副程式並運用遞迴呼叫(recursive call)技術,使該程式輸入一正整數N 後可以計算並輸出N!的值。【8 分】

詳解 (共 1 筆)

詳解 提供者:hchungw
#include <stdio.h>
// 遞迴函數,用於計算 N!
unsigned long long factorial(int n) {
    if (n == 0) {
        return 1; // 基礎情況:0! = 1
    } else {
        return n * factorial(n - 1); // 遞迴情況:N! = N * (N-1)!
    }
}
int main() {
    int N;
    printf("請輸入一個正整數 N: ");
    scanf("%d", &N);
    // 確保輸入的 N 是正整數
    if (N < 0) {
        printf("請輸入一個正整數。\n");
    } else {
        unsigned long long result = factorial(N);
        printf("%d! = %llu\n", N, result);
    }
    return 0;
}
說明
factorial 函數:
這個函數是遞迴函數,用來計算階乘。
當 n 為 0 時,返回 1(因為 0! = 1)。
否則,返回 n * factorial(n - 1),即 N! = N * (N-1)!。
main 函數:
從鍵盤輸入一個正整數 N。
如果輸入的 N 是負數,提示用戶輸入正整數。
否則,調用 factorial 函數計算 N!,並輸出結果。