给定模式......(1/2)^ 2 +(2/3)^ 2 +(3/4)^ 2 + ...
输入为n;这成为用于总和这些分数的最高分母。
当用户输入n = 2 ;总和很简单(1 / 2 )^ 2.
当用户输入n = 3 ;总和是(1/2)^ 2 +(2 / 3 )^ 2
我相信我已经解决了这个问题(我们假设用户输入的大于或等于2的整数)...
int n;
double sum = 0, counter = 2;
n = console.nextInt();
while(counter <= n) {
sum = sum + Math.pow(--counter/++counter, 2);
counter++;
}
System.out.println("Sum is " + sum);
是否有任何明显的&#34;简化我对这个问题的解决方案的方法(同时保持为while循环)?这是我写过的第一个循环之一。我不确定是否可以使用较少的变量来解决这个问题。
答案 0 :(得分:0)
尝试
int n;
double sum = 0, counter=1;
n = console.nextInt();
while((counter+1) <= n) {
sum = sum + Math.pow(counter/(counter+1), 2);
counter++;
}
System.out.println("Sum is " + sum);
答案 1 :(得分:0)
为什么不简化它并写下来:
int n;
double sum = 0, counter = 2;
n = console.nextInt();
while(counter <= n) {
sum = sum + Math.pow((counter - 1)/counter, 2);
counter++;
}
System.out.println("Sum is " + sum);
我不知道谁先计算(++计数器)或( - 计数器),if(--counter)你的反应是正确的,但不要用++或 - 污染你的代码,只有你使用它们需要它。