0 c
我无法正确使用代码.有人可以帮忙吗?
#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;
}
Run Code Online (Sandbox Code Playgroud)
IVl*_*lad 10
sum.用它初始化它0.n在每一步添加,但是j.当然,这是为了修复您当前的代码.有更好的方法来解决这个问题,其他人已经提到过.
编辑:
只是为了好玩,这是一个允许您解决问题的公式O(1):
你的金额等于n*(n + 1)*(2*n + 1) / 12 + n*(n + 1) / 4.
这是通过将其写为总和并使用第一个n连续正方形n(n + 1)(2n + 1) / 6的总和和第一个n正正整数之和的事实得到的n(n + 1)/2.如果您能找到更好的公式,请+1.
不需要递归,只需看看数学:
1 + (1+2) + (1+2+3) + ... + (1+2+3+...+n)
Run Code Online (Sandbox Code Playgroud)
等于
1*n + 2*(n-1) + 3*(n-2) + ... + n
Run Code Online (Sandbox Code Playgroud)
不是你的预期,但这是最好的解决方案;)
int calculate (int n) {
return (2*n + 3*n*n + n*n*n) / 6;
}
Run Code Online (Sandbox Code Playgroud)