我在C中创建一个简单的程序,用户插入一个数字,例如5,程序总和直到5,0 + 1 + 2 + 3 + 4。我正在使用这个公式
int sum_naturals(int n){
return (n-1)*n/2;
}
但是现在我想要一个可以从2个不同数字求和的公式,例如用户插入数字5和9,程序将执行5 + 6 + 7 + 8 + 9。
有人有ideia如何解决这个问题?感谢
答案 0 :(得分:6)
您可以重复使用您的功能
int sum(int a, int b) {
return sum_naturals(b) - sum_naturals(a-1)
}
当然你必须添加一些验证。
答案 1 :(得分:3)
但现在我想要一个可以从两个不同的数字中求和的公式,
要查找算术序列的一定数量项的总和:
#include <stdio.h>
static int sum_naturals(int a, int b)
{
return ((b - a + 1) * (a + b)) / 2;
}
int main(void)
{
printf("%d\n", sum_naturals(5, 9));
return 0;
}
输出:
35
答案 2 :(得分:0)
看起来像一个简单的任务,但由于你仍然无法理解它,为什么不先'定义'你的功能 - 在'编码'它们之前。
S ( n )= 0 + 1 + 2 + ... + n -1 = n (名词 -1)/ 2
F ( k , n )= k + k +1 + ... + n -1 + n = - (0 + 1 + ... + k -1)+(0 + 1 + ... + k -1)+ k + k +1 + ... + n -1 + n = - S ( k )+ S ( n ) + n = S ( n +1) - S ( k )< / p>
当然,需要假设k <= n等
我想所有混淆的原因是你定义了你的基本函数,从0到 n -1,而不是1到 n 的总和。