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
   80   81   82   83   84   85   86   87   88   89   90