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