我可以在不使用C循环的情况下打印1到10的总和吗?

时间:2014-10-16 23:33:24

标签: c sum

如何在不使用任何循环,外壳,开关,转到的情况下打印1到10的总和。

3 个答案:

答案 0 :(得分:6)

要查找算术序列的一定数量项的总和,请使用公式Sn = n(a1 + an) / 2,其中 S n n 术语( n th 部分和), a 1 是第一个术语, a n n 这个词。所以你可以写:

int n = 10;
int somme = n * (n + 1) / 2;
printf("%d", somme);

参考:http://www.regentsprep.org/regents/math/algtrig/atp2/arithseq.htm

答案 1 :(得分:1)

使用重复:计算子结果,直到您达到0,然后返回最终结果。

答案 2 :(得分:1)

这是一个使用递归的解决方案。通过最高限制,最低限制,0到SumNum,它将打印数字1到high的总和。它的作用是将数字high添加到您初始化为0的sum,然后使用high - 1 high再次调用该函数:

void SumNum(int high, int low, int sum)
{
    if (high == low) {
        printf("%i\n", sum);
        return;
    }
    else SumNum(high - 1, low, sum + high);
}

int main()
{
    SumNum(10, 0, 0);
}

我不确定这是否是最佳C,因为我主要使用C ++。我更喜欢C ++版本,您只需从high传递lowmain()而不传递0的起始值:

void SumNum(int high, int low, int sum = 0)
{
    if (high == low) {
        printf("%i\n", sum);
        return;
    }
    else SumNum(high - 1, low, sum + high);
}

int main()
{
    SumNum(10,0);
}