Re: Как закодировать?
- From
- Andrew Ezhguroff ()
- To
- Pavel P
- Date
- 2002-10-08T23:34:21Z
- Area
- RU.ALGORITHMS
From: "Andrew Ezhguroff" <eandr@com2com.ru>
Привет! "Pavel P" <vprin@indiainfo.com> сообщил(а):
PP> Мало ли чего нет в стандартном Паскале.
Задачи, для которых он создавался, стандартный Паскаль успешно решает.
PP> Ты его живьем то видел?
Меня на нем 17 лет назад программированию обучали - по Йенсен&Вирт.
PP> С его виртуальной машиной Р-кода?
Нет, с пи-кодом я непосредственно не сталкивался.
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)
Что за язык? Довольно забавный синтаксис... Но на стандартном 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> Сам догадаешься почему приведеный пример на порядок лучше чем твой С ?
И на порядок медленнее (язык больше похож на интерпретируемый)? :-)
Но вот преимуществ я не вижу: дополнительная функция, лишняя рекурсия
(проверка выполняется после рекурсивного вызова), серьезные накладные
расходы на работу со строками... И уж тем более никаких преимуществ перед
итерационным вариантом.
К тому же вариант, который ты предложил, не соответствует задаче: надо было
не вернуть, а распечатать строку. :-)
С уважением, Андрей.
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
* Origin: Talk.Mail.Ru (2:5020/400)