欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

以多种不同的思想实现1+2+...+n的求和

程序员文章站 2024-02-04 08:31:16
...

[思路1(使用基本的递归思想完成计算)]

#include<stdio.h>
/* 函数原型 */
unsigned long Sum(unsigned int n);
/* */
int main()
{
    int n;
    printf("Please input n:");
    scanf("%d", &n);
    if(n >= 1)
    {
        printf("sum=%lu\n", Sum(n));
    }
    else
    {
        printf("data error!\n");
    }
    /* */
    return 0;
}
/* 递归求和函数 */
unsigned long Sum(unsigned int n)
{
    if(n == 1)
    {
        /* 递归的终止条件 */
        return 1;
    }
    else
    {
        /* 递归的一般条件 */
        return n + Sum(n - 1);
    }
}

[思路2(使用尾递归思想完成计算)]

#include<stdio.h>
/* 函数原型 */
unsigned long Sum(unsigned int n, unsigned long S);
/* */
int main()
{
    int n;
    printf("Please input n:");
    scanf("%d", &n);
    if(n >= 1)
    {
        printf("sum=%lu\n", Sum(n, 0));
    }
    else
    {
        printf("data error!\n");
    }
    /* */
    return 0;
}
/* 尾递归求和函数 */
unsigned long Sum(unsigned int n, unsigned long S)
{
    S = S + n;
    if(n == 1)
    {
        return S;
    }
    else
    {
        return Sum(n - 1, S);
    }
}

[思路3(使用迭代思想完成计算)]

#include<stdio.h>
/* 函数原型 */
unsigned long Sum(unsigned int n);
/* */
int main()
{
    int n;
    printf("Please input n:");
    scanf("%d", &n);
    if(n >= 1)
    {
        printf("sum=%lu\n", Sum(n));
    }
    else
    {
        printf("data error!\n");
    }
    /* */
    return 0;
}
/* 迭代求和函数 */
unsigned long Sum(unsigned int n)
{
    unsigned int j = 1;
    unsigned long S = 0;
    while(j <= n)
    {
        S = S + j;
        j ++;
    }
    return S;
}