Создание функции pow (x1, x2) с использованием только приращений, уменьшений, циклов и = 0 - PullRequest
1 голос
/ 23 марта 2019

Это ограничения моей проблемы - я пытаюсь решить эту проблему другим вычислительным методом, но сначала пытаюсь решить ее на Java. Я могу читать на других языках.

Это то, что я имею до сих пор:

public static int pow(int x1, int x2){
    if(x1 == 0) return 0;
    if(x2 == 0) return 1;
    int exp = x2;
    int y = x1;
    exp--;
    int multi = x1;

    while(exp != 0) {
        int temp = y;
        while(multi !=0) {
            while (temp != 0) {
                y++;
                temp--;
            }
            multi--;
        }
        exp --;
        multi = x1;
        System.out.println();
    }

    return y;
}

pow(4,4) должно быть 256, но я получаю 32. pow(5,4) должно быть 625, но я получаю 40.

1 Ответ

0 голосов
/ 23 марта 2019

Я попытался получить правильный результат, изменив вашу реализацию как можно меньше (так как это было почти правильно!).

По сути, вам нужно было повторно использовать во внутреннем цикле while значение y, которое вы присвоили temp.Для этой цели я добавил переменную loopTempY.

Еще одно незначительное изменение было сделано во внешнем цикле, вам нужно только сделать цикл больше 1.

public static int pow(int x1, int x2) {
    if (x1 == 0) return 0;
    if (x2 == 0) return 1;
    int exp = x2;
    int y = x1;
    int multi;

    while (exp > 1) {
        multi = x1;
        int temp = y;
        int loopTempY = temp;
        while (multi != 1) {
            while (temp != 0) {
                y++;
                temp--;
            }
            temp = loopTempY;
            multi--;
        }
        exp--;

        System.out.println(y);
    }

    return y;
}  
...