我无法正确获取代码。 有人可以帮忙吗?
#include<stdio.h>
int main()
{
int n, sum,i,j;
printf("Please enter an integer, n = ");
scanf("%d", &n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
sum = sum + n;
printf("sum = %d", sum);
return 0;
}
最佳答案
- 您没有初始化
sum
。用0
初始化它。 - 您不应该在每一步添加
n
,而是添加j
。
当然,这是为了修复您当前的代码。有其他人已经提到的更好的方法来解决这个问题。
编辑:
只是为了好玩,这里有一个公式可以让您解决 O(1)
中的问题:
您的总和等于 n*(n + 1)*(2*n + 1)/12 + n*(n + 1)/4
。
这是通过将其写成总和并利用第一个 n
连续方 block 的总和为 n(n + 1)(2n + 1)/6
并且前 n
个正整数的总和是 n(n + 1)/2
。如果你能找到更好的公式形式,+1。
关于c - 编写程序执行 sum = 1+ (1+2) + (1+2+3) + ... + (1+2...+n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3249611/