输入一个正整数n(n<=16),生成一张阶乘表,输出从0!倒n!的值。题目要求用递归,其实我是不喜欢递归的,而且这里还没学function,所以写了一个无递归

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    int i, j, n, sum;
    printf("Enter n:");
    scanf("%d", &n);
    if (n < 0) {
        printf("n must greater than 0 or equals 0");
        return 0;
    }
    printf("0!=1\n"); // 0!=1是人为定义
    if (n!=0) {
        for(i=1;i<=n;i++) {
            sum = 1;
            for(j=1; j<=i; j++)
                sum *= j;
            printf("%d!=%d\n", i, sum);
        }
    }
    return 0;
}

20220112更新

今天学习的时候想到这个问题还有优化的地方,省掉一个循环

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int i, j, n, sum;
    printf("Enter n:");
    scanf("%d", &n);
    if (n < 0) {
        printf("n must greater than 0 or equals 0");
        return 0;
    }
    printf("0!=1\n");
    if (n!=0) {
        sum = 1;
        for(i=1;i<=n;i++) {
            sum *= i;
            printf("%d!=%d\n", i, sum);
        }
    }
    return 0;
}