【发布时间】:2018-02-08 05:48:23
【问题描述】:
我正在学校做一个项目,该项目要求我们开发一个程序来计算非负整数的四元组到零的距离。
描述为“假设您从一个非负整数 (a,b,c,d) 的四元组开始,并且您反复应用此规则: (a,b,c,d) → (|a−b|,|b−c|,|c−d|,|d−a|) 也就是说,将 a 替换为 |a−b|,将 b 替换为 |b−c|,将 c 替换为 |c−d|,将 d 替换为 |d−a|。 事实证明,最终,您将获得四元组 (0,0,0,0)。例如,从 (7, 3, 6, 1) 开始并重复应用上述规则,我们得到 (7,3,6,1) → (4,3,5,6) → (1,2,1,2) → (1,1,1,1) → (0,0,0,0) 在这种情况下,将 (7, 3, 6, 1) 转换为 (0, 0, 0, 0) 需要应用四次规则,所以我们说它到零的距离是四。”
到目前为止我得到的是:
int [] array = new int []{a, b, c, d};
int counter = 0;
while (array[0] != 0 && array[1] != 0 && array[2] != 0 && array[3] != 0){
array[0] = (int) Math.abs(array[0]-array[1]);
array[1] = (int) Math.abs(array[1]-array[2]);
array[2] = (int) Math.abs(array[2]-array[3]);
array[3] = (int) Math.abs(array[3]-array[0]);
counter++;
}
但是,它没有打印出我需要的内容,也不知道从那里去哪里,有什么帮助吗?
示例:当 a、b、c 和 d 设置为 7、3、6 和 1 时,将其打印为 (1,0,0,1) 而不是 (0,0,0,0)
【问题讨论】: