2015-11-15 3 views
5

Это вопрос меня попросили сегодня на собеседовании:Исправление ошибки в цикле

Посмотрите на следующий код:

int n=20; 
for (int i =0; i<n; i--) 
    print("*"); 

Вы позволили изменить один и только один символ, чтобы цикл работал ровно 20 раз.

Я вообще не смог ответить на вопрос. Сначала я подумал я ставил на 40, но затем понял, что 40 ins't меньше 20.

Мой интервьюер сказал, что 5 различных ответов на этот вопрос ...

Пожалуйста, помогите мне найти ответы.

+0

Обратите внимание, что этот код будет работать вечно. Это изменение происходит в послеитерационной части for-statement. –

+0

Это не javascript, ни C# –

+1

Также это вопрос безумного интервью - что ответ на этот вопрос говорит вашему интервьюеру о вас? Вы не хотите работать в компании с таким процессом собеседования. –

ответ

12

Изменения в

int n=20; 
for (int i =0; i<n; n--) 
print("*"); 
+0

Красиво сделанный шерлок! –

9

Другим один может быть:

int n=20; 
for (int i =0; -i<n; i--) 
    print("*"); 
+0

это хорошо, тоже ... но, это о * изменении *, * не добавлении * char. ;) – nelek

+2

@nelek нет, он меняется с одним пустым персонажем;) –

+0

да ... :) .... Вы тоже правы :) – nelek

4

Это один делает работу, а также:

int n=20; 
for (int i =0; i+n; i--) 
    print("*"); 

Предполагая, что язык неявно бросает целые числа в булевы, т.е. обрабатывает ненулевые целые числа как истинные, а нули - как ложные.

Смежные вопросы