编写一个计算以下等式的程序。 1分之100+2分之99+3分之98+ 97/4 +五分之九十六...98分之3+ 2/99 +一百分之一
我不是要求解决方案。是的,这是一个家庭作业问题,但我不是来复制粘贴答案。我让我的教授解释这个问题或者我该如何处理这个问题?她说:“我不能告诉你任何事情。”
public static void main(String[] args){
int i;
for(i = 100; i >= 1; i--)
{
int result = i/j;
j = j+1;
System.out.println(result);
}
}
答案 0 :(得分:5)
在解决此类问题时,您可以尝试观察“趋势”或“模式”。
鉴于: 100/1+99/2+98/3+97/4+96/5...3/98+2/99+1/100
我们得出:分子/分母,我们称之为n
除以d
(n / d)
观察到的模式:
n - 1
d + 1
所以,如果你有100个数字,你需要循环100次。因此,使用循环100次的for循环似乎是合适的:
for(int n=0; n<100; n++) //A loop which loops 100 times from 0 - 100
要让n以100开头,我们将循环更改为让n从100开始而不是0:
for(int n=100; n>0; n--) //A loop which loops 100 times from 100 - 0
你确定了n,现在需要从1开始。
int d = 1; //declare outside the loop
把所有东西放在一起,你得到:
int d = 1;
double result = 0.0;
for (int n=100; n>0; x--)
{
result += (double)n/d; //Cast either n or d to double, to prevent loss of precision
d ++; //add 1 to d after every loop
}
答案 1 :(得分:2)
你走在正确的轨道上。你需要像你已经完成的那样循环,但是你需要将所有结果汇总起来。在您的示例中,您可以尝试:
result = result + i/j;
或
result += i/j;
请注意,结果声明需要在循环之外,否则您始终会初始化它 还要考虑除法(提示),你要划分整数......
答案 2 :(得分:0)
如果您希望结果采用相同的格式,请执行以下操作:
int j = 100;
double sum=0;
for (int i = 1; i <= 100; i++) {
sum += ((double) j / i); // typecast as least one of i or j to double.
System.out.print(j + "/" + i+"+");
j--;
}
// here print the sum
答案 3 :(得分:0)
你拥有的是series。
定义一个系列的方法不止一种,但所有事情都是相同的,让一系列的索引增加而不是减少更直观。
在这种情况下,您可以使用0到99之间的i
。
在java中可以是:
double sum = 0;
for (int i = 0; i < 100; i++) {
sum += (100 - i) / (double) (1 + i);
}