我正在尝试使用表“ charms”比较值,但是我的外部3个循环将仅注册第一次迭代。只有最内层的循环会比较所有值。

while (m < 17) {
        while (n < 17) {
            while (o < 17) {
                while (p < 17) {
                    number = (Math.pow(w, charms[m]))
                            * (Math.pow(x, charms[n]))
                            * (Math.pow(y, charms[o]))
                            * (Math.pow(z, charms[p]));
                    if (Math.abs(cons - number) < Math.abs(cons - closest)) {
                        closest = number;
                        a = charms[m];
                        b = charms[n];
                        c = charms[o];
                        d = charms[p];
                    }
                    p++;
                }
                o++;
            }
            n++;
        }
        m++;
    }

最佳答案

首先,您没有显示如何初始化m, n, o and p。其次,您不会在任何时候重置计数器。一旦您经历了最内层的循环,您就永远不会再经历它,因为p之后将大于或等于17。然后,一旦o达到17,您将永远不会再进入该循环,依此类推。

10-06 10:09