Страница 1 из 3

тонкий программисткий юмор

Добавлено: 24 окт 2003, 15:23
ajkj3em
хороший (я бы даже сказал панковский) вопрос для письменного (pen/paper) интервью :

что вернет f(27), где

Код: Выделить всё

int f(int v)
{
  if (v & 1)
    return f(3*v+1);
  return f(v/2);
}
ps. задача ессно с под**кой, типа на общую эрудицию .. :)

Добавлено: 24 окт 2003, 15:33
папа Карло
я тупой... у меня вернет 13, а что? :)

Добавлено: 24 окт 2003, 15:39
vg
Я тоже не далеко от Фридриха Марксовича.

"Компилировал" в голове, на компе не проверял,
но тоже получилось 13. Не так? В чём прикол-то?

Добавлено: 24 окт 2003, 15:41
ajkj3em
сорри, опечатки. рекурсия - это раз, v/2 для четных - это два

Добавлено: 24 окт 2003, 15:51
vg
Чистая бумага,
я бы сказал, что не красиво вначале - одно писать,
а затем редактировать. Не честно. Ты редактировал свой пост
два раза. Что было в начале, когда мы с Карлой смотрели в первый раз?

Добавлено: 24 окт 2003, 15:59
папа Карло
drain bamage писал(а):сорри, опечатки. рекурсия - это раз, v/2 для четных - это два
дык это все в корне меняет :) надо считать да? :) блин злодей :))) время будет подумаю :)

Добавлено: 24 окт 2003, 16:07
ajkj3em
папа Карло писал(а):
drain bamage писал(а):сорри, опечатки. рекурсия - это раз, v/2 для четных - это два
дык это все в корне меняет :) надо считать да? :) блин злодей :))) время будет подумаю :)
подсказываю, отец - задачка на эрудицию
либо ты знаешь о чем речь, либо будешь считать :)

Добавлено: 24 окт 2003, 16:16
папа Карло
конечно не знаю. :) я не программист, откуда мне знать :) сичтать буду, на бумажке, как тупой. :)

Добавлено: 24 окт 2003, 18:27
Marmot
stack кончится, imho

Добавление:
... если конечно inlining-а не будет...
Но не вернётся по-любому...

Добавлено: 24 окт 2003, 19:44
ajkj3em
Marmot писал(а):stack кончится, imho

Добавление:
... если конечно inlining-а не будет...
Но не вернётся по-любому...
yep .. теперь говори почему

Добавлено: 24 окт 2003, 19:48
Marmot
drain bamage писал(а):
Marmot писал(а):stack кончится, imho

Добавление:
... если конечно inlining-а не будет...
Но не вернётся по-любому...
yep .. теперь говори почему
Да ладно тебе, пускай пацаны подумают :lol:

ЗЫ
У меня в продукте Tail Call Elimination - это одна из фич, btw

ЗЗЫ
Или ты решил что я это запускал :lol:

Добавлено: 24 окт 2003, 23:23
vg
Чистая-пречистая бумага, отвечает пацан.

Ну, не вернётся, т.к. в любом случае (чёт/нечет) следует рекурсивный
вызов f.
Ну и что? Прикол-то в чём? Где смеяться?

Добавлено: 25 окт 2003, 08:14
Marmot
vg писал(а):Чистая-пречистая бумага, отвечает пацан.

Ну, не вернётся, т.к. в любом случае (чёт/нечет) следует рекурсивный
вызов f.
Ну и что? Прикол-то в чём? Где смеяться?
Прикол в том, что некоторые местные "крутые пацаны" собирались нам это значение посчитать :lol:

Добавлено: 25 окт 2003, 09:46
ilid
Ну да, достаточно просто пристально посмотреть. Я например не знал что if(v & 1) - проверка на чётность интеджера :) ну да век живи век учись. Наколько я понял если у тебя число чётное - делим пополам, а нечётное - превращаем в чётное, причём намного большее чем исходное. Если начать с 27 - то скорее всего мало того что будет вечный луп, я думаю что число будет расти пока не упрётся в максимум 31 бит после чего станет отрицательным.

Добавлено: 25 окт 2003, 10:53
ajkj3em
vg писал(а):Чистая-пречистая бумага, отвечает пацан.

Ну, не вернётся, т.к. в любом случае (чёт/нечет) следует рекурсивный
вызов f.
Ну и что? Прикол-то в чём? Где смеяться?
прикол в том, что 3*n+1 не есть нечет.