如何用C语言编写一个程序来计算s=1+(1+2)+(1+2+3+…+n)?
时间: 2024-11-18 16:12:03 浏览: 60
计算 S=1!+2!+3!+...+N! C语言代码
要用C语言编写一个程序来计算等差数列求和 \( s = 1 + (1+2) + (1+2+3+\ldots+n) \),这是一个典型的高斯求和问题,通常涉及到动态规划的思想。下面是一个简单的示例:
```c
#include <stdio.h>
// 动态规划函数计算前n个自然数之和
int sum_of_natural_numbers(int n) {
if (n <= 0) {
return 0; // 如果n小于等于0,返回0
} else if (n == 1) {
return 1; // 只有一个数时,结果就是该数本身
} else {
return n + sum_of_natural_numbers(n - 1); // 递归公式:S(n) = n + S(n-1)
}
}
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
// 计算并打印结果
int result = sum_of_natural_numbers(n);
printf("1到%d的自然数之和为 %d\n", n, result);
return 0;
}
```
在这个程序中,`sum_of_natural_numbers` 函数通过递归实现了对自然数序列的求和,然后在 `main` 函数中获取用户输入,并显示计算结果。
阅读全文