2014-09-04 5 views
-5

Основной вопрос:Сколько раз цикл (for) повторяется?

for(int i=start;i<=end;i+=step){ 
    System.out.println("Test"); 
} 

< начало конца

Как часто проходит через петлю, соответственно, что математическая формула?

+0

Trick вопрос? Является ли 'start Thilo

+0

start user

+1

Нет. Он оптимизирован компилятором. –

ответ

1

Вашего for цикл представляет собой сокращенный следующий код:

int i = start; 
if (i <= end) { 
    /* loop body */ 
    i += step; 
} 

Чтобы ответить на ваш вопрос, он будет работать ceiling((end - start + 1)/step) раз. Пройдитесь по логике на бумаге, чтобы увидеть, пришли ли вы к такому же выводу.

+0

start = 0, end = 10, step = 3. Итерации 4 раза, но (10-0) /3=3.33 – user

+0

@user Примените функцию «потолок» к результату. –

2

Нам нужно знать, каковы значения начала, конца и шага.

if: 
    start = 0; 
    end = 10; 
    step = 1; 

Это будет цикл 11 раз, каждый раз добавляя 1 к предыдущему значению I, пока не будет < = 10. (0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , 10, 11)

if: 
    start = 0; 
    end = 10; 
    step = 2; 

это будет цикл 6 раз, каждый раз при добавлении 2 к предыдущему значению I, пока не будет < = 10. (0, 2, 4, 6, 8, 10)

if: 
    start = 10; 
    end = 100; 
    step = 10; 

Это будет цикл 10 раз, каждый раз, добавляя 10 к предыдущему значению от i до < = 100. (10, 20, 30, 40, 50, 60, 70, 80, 90, 100)

И так далее.

+0

В этом суть. Мне нужно знать (математический) ответ с переменными, а не со значениями. – user

+0

В качестве альтернативы мы можем дать математическую функцию в терминах 'start',' end' и 'step'. –