在线编译器 C

#include <stdio.h> int factorial(int n){ int result=1; for(int i=1;i<=n;i++){ result*=i; } return result;} int main() { printf("%d", factorial(3)); return 0; }
这段代码定义了一个计算阶乘的函数 `factorial`,并在 `main` 函数中调用它来计算 3 的阶乘并打印结果。代码逻辑基本正确,但有一个小问题需要注意。

- 在 `factorial` 函数中,当 `n` 为 0 时,循环不会执行,`result` 保持为 1,这符合数学定义(0! = 1)。但你的代码没有显式处理 `n` 为负数的情况,如果传入负数,循环条件 `i <= n` 不成立,会返回 1,这在数学上没有定义。你可以考虑是否需要对负数输入做特殊处理。

- 另外,`factorial` 函数的返回类型是 `int`,当 `n` 较大时(比如 13 以上),结果会超出 `int` 的范围,导致溢出。你可以思考是否需要使用更大的数据类型,比如 `long long`。