DECIMATION LOGIC

时间:2017-05-26 12:23:51

标签: math logic

是否可以抽取一千个物品,直到只剩下一个物品,如果需要,需要多少个抽取周期?通过抽搐,我的意思是只移除十分之一并离开其余部分,例如,第一个周期:1000 - 900(删除十分之一:100)                                第二个周期:900 - 810(删除第十个:90)

1 个答案:

答案 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);
    }
  }
}