如何在不使用任何循环,外壳,开关,转到的情况下打印1到10的总和。
答案 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
传递low
和main()
而不传递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);
}