是否可以抽取一千个物品,直到只剩下一个物品,如果需要,需要多少个抽取周期?通过抽搐,我的意思是只移除十分之一并离开其余部分,例如,第一个周期:1000 - 900(删除十分之一:100) 第二个周期:900 - 810(删除第十个:90)
答案 0 :(得分:0)
这取决于您使用的数字类型。
如果使用浮点数,最终将达到小于1
的值(不完全如下,因为以下java程序的输出显示):
class Main {
public static void main(String[] args) {
int i = 0;
double val = 1000;
while (val > 1) {
val -= val/10;
i++;
System.out.println("val = " + val + " in iteration " + i);
}
}
}
摘录输出:
val = 900.0 in iteration 1
val = 810.0 in iteration 2
val = 729.0 in iteration 3
...
val = 1.0611166119964726 in iteration 65
val = 0.9550049507968253 in iteration 66
如果你使用整数类型,将不会达到1
,因为只要val == 9
,它就不会变得更小,因为divison结果是{{ 1}}。我添加了一个检查以捕获该条件以防止无限循环。
让我们来看看:
0
输出:
class Main {
public static void main(String[] args) {
int i = 0;
int val = 1000;
while (val > 1) {
int subtract = val/10;
if (subtract == 0) {
System.out.println("subtracted value is 0 for value " + val + " at iteration " + i);
break;
}
val -= subtract;
i++;
System.out.println("val = " + val + " in iteration " + i);
}
}
}