|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Ezhguroff 2:5020/400 08 Oct 2002 23:34:21 To : Pavel P Subject : Re: Как закодировать? -------------------------------------------------------------------------------- Привет! "Pavel P" <vprin@indiainfo.com> сообщил(а): PP> Мало ли чего нет в стандартном Паскале. Задачи, для которых он создавался, стандартный Паскаль успешно решает. PP> Ты его живьем то видел? Меня на нем 17 лет назад программированию обучали - по Йенсен&Вирт. PP> С его виртуальной машиной Р-кода? Hет, с пи-кодом я непосредственно не сталкивался. PP> :) Люди не пишите на С :) Пишите вот так :) PP> toBin 0 = "0" PP> toBin x = f x PP> where PP> f 0 = "" PP> f x = f (x >> 1 bitand INT_MAX) +++ toString (x bitand 1) Что за язык? Довольно забавный синтаксис... Hо на стандартном C++ твой алгоритм можно уложить в 2 строчки: std::string f(int x){return x? f((x>>1)&INT_MAX)+char((x&1)+'0'): "";} std::string toBin(int x){return x? f(x): "0";} PP> Сам догадаешься почему приведеный пример на порядок лучше чем твой С ? И на порядок медленнее (язык больше похож на интерпретируемый)? :-) Hо вот преимуществ я не вижу: дополнительная функция, лишняя рекурсия (проверка выполняется после рекурсивного вызова), серьезные накладные расходы на работу со строками... И уж тем более никаких преимуществ перед итерационным вариантом. К тому же вариант, который ты предложил, не соответствует задаче: надо было не вернуть, а распечатать строку. :-) С уважением, Андрей. -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6488a7362c86.html, оценка из 5, голосов 10
|