我想计算总和
I want to calculate the sum
我想用c++求和,
总和 = 1 + ... + (2n - 1) = n2
我试过了
double s = 0;
int i = 1;
int n = 5;
for(i = 1; i <= n; i++){
double val = (double)i / (i + 1);
if (i % 2 != 0){
val *= -1.;
}
s += val;
}
但不正确。有人可以帮我吗?
试试这个:
long sum = 0;
long val = 1;
int n = 5;
for(int i = 1; i <= n; i++){
val *= (2*i - 1);
if (i % 2 == 0) {
val *= -1;
}
sum += val;
}
return sum;
使用 long 因为 double 用于十进制值(不是这种情况)
你是指下面这样的意思吗?
#include <iostream>
int main()
{
while ( true )
{
std::cout << "\nEnter a positive integer number (0-exit): ";
unsigned int n = 0;
std::cin >> n;
if ( !n ) break;
long long int sum = 0;
long long int item = 1;
for ( unsigned int i = 1; i <= n; i++ )
{
item *= 2 * i - 1;
sum += ( i % 2 == 0 ? - item : item );
}
std::cout << "\nSum is equal to " << sum << std::endl;
}
}
程序输出可能看起来像
Enter a positive integer number (0-exit): 10
Sum is equal to -622171082
Enter a positive integer number (0-exit): 0
你现在的完全改变了,任务要求你是将1
到2n-1
的奇数相加得到数字n^2=n*n
for(i=1; i<2*n; i+=2) sum +=i
或
for(i=1; i<=n; i++) sum += 2*i-1
仅此而已。
注意对于重修前的原始任务,双阶乘的交替求和,Horner-Ruffini方案给出公式
1-1*3+1*3*5-...+-1*3*...*(2n-1) = 1-3*(1-5*(1-7*(1-....*(1-(2n-1))...)))
这给出了循环
sum = 1;
for(i=n-1; i>0; i--)
sum = 1-(2*i+1)*sum;
我想用c++求和,
总和 = 1 + ... + (2n - 1) = n2
我试过了
double s = 0;
int i = 1;
int n = 5;
for(i = 1; i <= n; i++){
double val = (double)i / (i + 1);
if (i % 2 != 0){
val *= -1.;
}
s += val;
}
但不正确。有人可以帮我吗?
试试这个:
long sum = 0;
long val = 1;
int n = 5;
for(int i = 1; i <= n; i++){
val *= (2*i - 1);
if (i % 2 == 0) {
val *= -1;
}
sum += val;
}
return sum;
使用 long 因为 double 用于十进制值(不是这种情况)
你是指下面这样的意思吗?
#include <iostream>
int main()
{
while ( true )
{
std::cout << "\nEnter a positive integer number (0-exit): ";
unsigned int n = 0;
std::cin >> n;
if ( !n ) break;
long long int sum = 0;
long long int item = 1;
for ( unsigned int i = 1; i <= n; i++ )
{
item *= 2 * i - 1;
sum += ( i % 2 == 0 ? - item : item );
}
std::cout << "\nSum is equal to " << sum << std::endl;
}
}
程序输出可能看起来像
Enter a positive integer number (0-exit): 10
Sum is equal to -622171082
Enter a positive integer number (0-exit): 0
你现在的完全改变了,任务要求你是将1
到2n-1
的奇数相加得到数字n^2=n*n
for(i=1; i<2*n; i+=2) sum +=i
或
for(i=1; i<=n; i++) sum += 2*i-1
仅此而已。
注意对于重修前的原始任务,双阶乘的交替求和,Horner-Ruffini方案给出公式
1-1*3+1*3*5-...+-1*3*...*(2n-1) = 1-3*(1-5*(1-7*(1-....*(1-(2n-1))...)))
这给出了循环
sum = 1;
for(i=n-1; i>0; i--)
sum = 1-(2*i+1)*sum;