温简言的狗 2024-05-04 02:04 采纳率: 0%
浏览 3

for循环中变量初始化位置

求问ret为什么还要在第一层嵌套里初始化啊
ret=ret*i中,等号右边ret是前一位数的阶乘,再乘以i不就是等号左边ret该数的阶乘了吗,如果ret初始化等于1之后等号右边不就一直是1了吗😢

img

  • 写回答

5条回答 默认 最新

  • qzjhjxj 2024-05-04 10:05
    关注

    对每一个 n 计算阶乘,ret 需要每次置位为 1,才能正确的计算出每一个 n! 。
    其实代码里第二层的for(i= 1; i <= n; i++) 循环可以省略,改为这样即可:

    #include <stdio.h>
    int main()
    {
        int i = 1, n = 0, ret = 1, sum = 0;
        for (n = 1; n <= 10; n++)
        {
            //ret = 1;
            //for (i = 1; i <= n; i++)
            //{
                ret = ret * n; // 修改
            //}
            sum = sum + ret;
        }
        printf("%d", sum);
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月4日