![](/img/trans.png)
[英]Enter two integers a and b (a ≤ b) and output the sum of the squares of all numbers from a to b. (C)
[英]Sum in C, from two numbers
我在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如何解決這個問題? 謝謝
您可以重復使用您的功能
int sum(int a, int b) {
return sum_naturals(b) - sum_naturals(a-1)
}
當然你必須添加一些驗證。
為什么不呢?
int sum_2_naturals(int n, int m){
return (sum_naturals(m) - sum_naturals(n))
}
但是現在我想要一個可以從2個不同數字求和的公式,
要查找算術序列的一定數量項的總和:
#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
看起來像一個簡單的任務,但由於你仍然無法理解它,為什么不先'定義'你的函數 - 在'編碼'它們之前。
S ( n )= 0 + 1 + 2 + ... + n -1 = n ( 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 )
當然,需要假設k <= n等。
我想所有混淆的原因是你定義了你的基本函數,從0到n -1,而不是1到n之和 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.