阶乘和碰到的问题

实验2-4-4-for 求阶乘序列前N项和

最终正确答案

#include<stdio.h>
int main()
{
    int  n=0, total=1, sum = 0 ;
    scanf("%d", &n);
    for (int i = 1;i <= n;i++)
    {
        total = 1;
        for (int j = 1;j <= i;j++)
        {
            total = total * j;
        }
        sum = sum + total;
    }
    printf("%d", sum);
}

离成功只差一步的答案

#include<stdio.h>
int main()
{
    int  n=0, total=1, sum = 0 ;
    scanf("%d", &n);
    for (int i = 1;i <= n;i++)
    {
       
        for (int j = 1;j <= i;j++)
        {
            total = total * j;
        }
        sum = sum + total;
    }
    printf("%d", sum);
}

最开始的错误答案

#include <stdio.h>

int main()
{
    int n = 0;

    int sum = 0, total = 1;
    scanf("%d", &n);
    for (int i = 1;i <= n;i++) {

        for (int j = 1;j <= i;j++)
        {
            total *= j;
        }
        sum += total;
    }

    printf("sum = %d\n", sum);

    return 0;
}

求助的答案

#include<stdio.h>
int fact(int n);
int main() {
    int n, i;
    int sum = 0;

    scanf("%d", &n);
    for (i = 1;i <= n;i++) {
        sum += fact(i);
    }
    printf("%d", sum);
}

int fact(int n) {
    int j;
    int total = 1;

    for (j = 1;j <= n;j++) {
        total *= j;
    }
    return total;
}


小结

  • 一开始只能想到普通的做法,但是没有想到嵌套的for语句

  • 然后用到了嵌套后卡住

  • 最后的一个解法暂时不能理解

  • 问问题的时候了解到了几个新名词: 大数算法,堆栈,递归,迭代,数据溢出(应该和整型有关)

  • 能用简单的解决为什么要这么麻烦。

  • 应该是用来解决更复杂的问题

  • 一个问题:
    为什么把total放在里面就可以了?

原文地址:https://www.cnblogs.com/Z1188G/p/13727380.html