Проблемы с пониманием вывода этого java-кода

public static void main(String[] args){
    int[] arr = {2, 1, -7, 16, -2, 11};

    for (int i = 5; i >= 1;  i--){         
        arr[i] = arr[i] + 2*arr[i – 1];
    }
}

Результат этого кода равен: {2, 5, -5, 2, 30, 7} Я просто не понимаю, как на самом деле работает формула для получения этих результатов. Код начинается с позиции 5 и проверяет каждое число в массиве в обратном порядке, но какова фактическая математика за этим? Я попытался заменить 5 на i, но результаты, которые я получаю, отличаются, когда я пытаюсь решить это самостоятельно. Кто-нибудь может мне здесь помочь?

ты понимаешь, как работает массив?

MD Ruhul Amin 28.10.2018 07:09

Изучите основы из книги, прежде чем размещать на переполнение стека.

Md. Mokammal Hossen Farnan 28.10.2018 08:24

Я предлагаю вам пройтись по коду в вашем отладчике, чтобы увидеть, что делает каждая строка кода.

Peter Lawrey 28.10.2018 08:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
37
1

Ответы 1

Данный массив = {2, 1, -7, 16, -2, 11};

Итерация вашего кода:

i=5:
array[5] = array[5] + 2*array[4]
array[5] = 11 + (2*-2)
array[5] = 11 - 4 = 7

i=4:
array[4] = array[4] + 2*array[3]
array[4] = -2 + 32 = 30

так же все остальные следуют

Я так понимаю, что вы новичок. Кстати, это Java, а не Javascript. Оба разные. Я рекомендую вам изучить массивы или использовать отладчик в вашей IDE, чтобы вы могли видеть, как работает код.

Другие вопросы по теме