我正在为这个关于算术的问题而苦苦挣扎



函数必须返回from和to之间包含这些数字的所有整数的和。例如,arithmeticSum(2,4)应该是9,因为2+3+4 = 9。

这是现在的代码,我不能改变main中的任何东西。

#include <iostream>
using namespace std;
int aritmetiskSumma(int from, int to){
int i=0;
int sum=0;
for(i=1;i<to;i++){
sum+=i;
}
return sum; // TODO
}
// Ändra inget nedanför denna rad
void provaAritmetiskSumma(){
int from, to;
cin >> from >> to;
int summa = aritmetiskSumma(from, to);
cout << summa << endl;
}
int main(){
provaAritmetiskSumma();
return 0;
}

为了计算和,像这样调整for循环:

for(; from <= to; from++)
{
sum += from;
}

此代码从from值开始,计算到to的所有整数的和。

你几乎很好,只需要修复障碍:你想从from, 0偏移和包括to:

for(i=from; i<=to; i++){

嘿!算术和函数从";"one_answers"to",但是函数体不包含"from"变量。函数每次都从i = 1开始运行,而不是从i = from.

我也认为I应该小于或等于"to"在for循环中

不用循环就可以解决这个问题。级数1 + 2 + ... + n等于n(n+1)/2(源)。

我们可以从b + (b + 1) +…+ (e - 1) + e作为计算值(1 + 2 +…)+ (e - 1) + e) -(1 + 2 +…+ (b - 1)),假设b和e都是正整数。这两项都可以用这个公式计算。

1 + 2 +…+ (e - 1) + e = e(e+1)/2.

1 + 2 +…+ (b- 2) + (b-1) = (b-1)(b)/2

把这两个公式放在一起,我们得到:

Sum(b,e) = (e(e+1)-(b-1)b)/2

使用你的输入,我们有:

总和(2、4)=(4(4 + 1)-(2 - 1)2)/2 =(4(5)- 1(2))/2 = 9。

在代码中,它看起来像这样:

int sum(int b, int e) {
if(b == 0) return e * (e + 1) / 2;
return (e * (e + 1) - (b-1) * b) / 2;
}

同样,这只适用于正b和e。

相关内容

最新更新