输入一个正整数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;
}