我有一个代码,用于计算n个数字的和,但这个程序有一个小问题,对于n=4,将是这样的,sum=1*2+1*2*3+1*2*3*4.我已经开始用for,但突然输出几乎与现实相差无几,但仍然很远:))。我不想成为程序员开玩笑的对象:))。所以帮我理解一下这背后的概念...我离答案还很远。
你可以试着运行下面的代码 -> 试着理解其中的逻辑。
你的方法应该是这样的
public static void main(String args[])
{
int n = 4;
int sum = 0;
int mul = 1;
for(int i=2;i<=n;i++)
{
for (int j=2;j<=i;j++)
{
mul = mul * j;
}
sum = sum+mul;
mul=1;
}
System.out.println("the answer is " + sum);
}
也可以试试这个代码。
sum=0;pro=1;
for(i=2;i<=n;i++){ //Since you did not mentioned the answer for n=1...
pro = pro * i; // this will be like 2 , 2*3 , 2*3*4 ... so on at each step
sum += pro;
}
cout<<sum;
它可以在O(n)时间内完成。
这是你在java 8中可能做的。如果n < 2,那么这将无法工作。
int result = IntStream.rangeClosed(2, n)
.map(x -> IntStream.rangeClosed(1, x).reduce(1, (first, second) -> first * second))
.sum();