Page 85 - Bkhargava_-_Grokaem_algoritmy
P. 85
84 Глава 4. Быстрая сортировка
СОВЕТ
Когда вы пишете рекурсивную функцию, в которой задействован массив, ба
зовым случаем часто оказывается пустой массив или массив из одного эле
мента. Если вы не знаете, с чего начать, - начните с этого.
~----- ----- ------------------------------- ----~
ПАРА СЛОВ О ФУНКЦИОНАЛЬНОМ ПРОГРАММИРОВАНИИ
Зачем применять рекурсию, если задача легко решается с циклом?
Вполне резонный вопрос. Что ж, пора познакомиться с функцио
нальным программированием!
В языках функционального программирования, таких как Haskell,
циклов нет, поэтому для написания подобных функций приходит
ся применять рекурсию. Если вы хорошо понимаете рекурсию, вам
будет проще изучать функциональные языки. Например, вот как вы
глядит функция surn на языке Haskell:
sum [] = 0 " ""."."" .. " ." ........ """" ............ . Базовый случай
sum (x:xs) = х + (sum xs) " ""."""""". Рекурсивный случай
На первый взгляд кажется, что одна функция имеет два определе
ния. Первое определение выполняется для базового случая, а вто
рое - для рекурсивного случая. Функцию также можно записать на
Haskell с использованием команды if:
sum arr = if arr == []
then 0
else (head arr) + (sum (tail arr))
Но первое определение проще читается. Так как рекурсия широко
применяется в языке Haskell, в него включены всевозможные удоб
ства для ее использования. Если вам нравится рекурсия или вы хо
тите изучить новый язык - присмотритесь к Haskell.
www.trk.kg