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