怎么用非递归的方式求 n 的阶乘呢?

怎么用非递归的方式求 n 的阶乘呢?

问题描述:

怎么用非递归的方式求 n 的阶乘呢?不需要递归的,递归的我了谢谢
给定一个 n,求它的阶乘~

#include <stdio.h>
int main() {
    int n, ans;
    while(scanf("%d", &n) != EOF) {
        ans = 1;              // (1)
        while(n) {            // (2)
            ans *= n;         // (3)
            --n;              // (4)
        }
        printf("%d\n", ans);
    }
    return 0;
} 
  • $(1)$ 初始化结果ans为1;
  • $(2)$ 用一个while语句来执行循环,一直自减 n,直到n减为零为止;
  • $(3)$ 将当前n的值累乘给 ans(循环完毕,ans就是1n的数的累乘的积);
  • $(4)$ --n等价于n = n - 1
  • 这种方法,就是普通的枚举,正确性容易保证。

具体可以看这篇文章: