Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2017, 01:41   #1
arthas65536
Новичок
Джуниор
 
Регистрация: 03.11.2017
Сообщений: 2
По умолчанию Сколько раз выполняется if?

Здравствуйте, помогите понять сколько раз выполняется вложенный if
Код функции ниже.
У меня получается, что он выполняется N(N-1)(N-2) раз
Но в книге написано N(N-1)(N-2)/6
Не могу понять от куда здесь /6???


Код:
public static int count(int[] a) {
        int n = a.length;
        int count = 0;
        for (int i = 0; i < n; i++) {
            for (int j = i+1; j < n; j++) {
                for (int k = j+1; k < n; k++) {
                    if (a[i] + a[j] + a[k] == 0) {
                        count++;
                    }
                }
            }
        }
        return count;
    }

Последний раз редактировалось Alex11223; 03.11.2017 в 01:43.
arthas65536 вне форума Ответить с цитированием
Старый 03.11.2017, 02:25   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Выведи на экран "i, j, k" и проанализируй (я сделал на примере "n=5").
(обрати внимание не только на значения, но и на пустые строки "enter"):


0.jpg


Подсчитай количество строк (в консоли) - это будет количество проверок.
А "count" же - это кол-во, которые удовлетворяют условию "a[i] + a[j] + a[k] == 0"

Что можно сказать...
Например: при i>2 условия нижележащих циклов перестаёт выполняться и они не выполняются.
В первую очередь "k < n при k=j+1", а потом и "j < n"...

Короче смотри на картинку и делай выводы...

Последний раз редактировалось ura_111; 03.11.2017 в 02:55.
ura_111 вне форума Ответить с цитированием
Старый 03.11.2017, 10:14   #3
arthas65536
Новичок
Джуниор
 
Регистрация: 03.11.2017
Сообщений: 2
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Выведи на экран "i, j, k" и проанализируй (я сделал на примере "n=5").
(обрати внимание не только на значения, но и на пустые строки "enter"):


Вложение 90235


Подсчитай количество строк (в консоли) - это будет количество проверок.
А "count" же - это кол-во, которые удовлетворяют условию "a[i] + a[j] + a[k] == 0"

Что можно сказать...
Например: при i>2 условия нижележащих циклов перестаёт выполняться и они не выполняются.
В первую очередь "k < n при k=j+1", а потом и "j < n"...

Короче смотри на картинку и делай выводы...

Я наверное не корректно сформулировал вопрос.
Меня интересует сколько раз за выполнение программы будет вызван if.
Мои рассуждения по этому поводу:
В третьем вложенном цикле If выполнится N-2 раз, а этот цикл будет выполняться N-1 раз, получается (N-1)(N-2) и еще первый цикл N раз.
Итого N(N-1)(N-2)
Но в книге стоит выражение N(N-1)(N-2)/6
И я не понимаю как берется эта 6.

И почему же циклы останавливаются после i=2.....
arthas65536 вне форума Ответить с цитированием
Старый 03.11.2017, 10:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Посмотри что стоит в каждом for. И чего вдруг решил так просто умножить? Для i=0 2-ой цикл выполнится n-1 раз, для i=1 - n-2 раз и т.д. Аналогично и количество выполнений 3-го цикла зависит от j . Исходя из этого и посчитай. В посте #2 на это и ткнули носом ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо по объектам сделать анализ сколько раз отваливался и на сколько. Отвалился это разница между есть-нет. lilugm Microsoft Office Excel 1 31.10.2017 13:15
Условие выполняется один раз в foeach REztor C# (си шарп) 7 13.04.2014 15:42
Почему код выполняется правильно только один раз? Questru Microsoft Office Excel 8 25.01.2013 09:50
сколько раз выполняется тело цикла? adm2010 Паскаль, Turbo Pascal, PascalABC.NET 2 23.12.2010 16:46
Скрипт выполняется только один раз MAKSA JavaScript, Ajax 6 12.02.2010 13:48