C++嵌套For循环计算阶乘结果错误,求原因及解决办法
阶乘计算错误的修复
你的代码问题出在**fact变量没有每次计算前重置**:
- 你只在程序最开始把
fact初始化为1,之后计算每个数字的阶乘时,都是在上一次的结果基础上继续相乘,导致结果是累积的乘积(比如计算5的阶乘时,实际是1!×2!×3!×4!×5!的累积值)。
修正后的代码:
for (int number=1; number<=10; number++) { int fact=1; // 每次计算新数字的阶乘前,重置fact为1 for (int i=1; i<=number; i++) { fact=fact*i; } cout <<"factorial of "<<number<<"="<<fact<<"\n"; }
修复说明:
- 把
fact的初始化移到外层循环内部,这样每次计算number的阶乘时,fact都会从1开始重新累乘,得到正确的单个数的阶乘结果。 - 给内层循环加上大括号,避免代码缩进导致的逻辑歧义(原代码里
cout的执行逻辑没问题,但加括号能让代码结构更清晰)。
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

