Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Vitaly Lugovsky                      2:5080/1003    18 Jan 2003  00:21:25
 To : Oleg I. Khovayko
 Subject : Re: Recursion vs Iteration
 -------------------------------------------------------------------------------- 
 
 Oleg I. Khovayko <olegh@ncbi.nlm.nih.gov> wrote:
 
 > let rec tfindl f nl =
 >   let rec nxtlyr = function
 >     hd :: tl ->
 >      (match hd with
 >        Tnode(v,l,r) -> if f v than raise (Found(v)) else
 >          l::r::(nxtlyr tl) | Tnone -> nxtlyr tl
 >       )
 >    | [] -> []
 >   in tfindl f (nxtlyr nl)
 
  А вот теперь поизвращаемся. Дабы мощщу и универсальность рекурсии показать,
 да и просто заради маразма.
 
  Предположим, что следующие функции у нас и так уже есть (по крайней мере
 у меня они многа-многа где используются).
 
 let rec dolist f l =
   let ll = f l in
   match ll with [] -> [] | _ -> dolist f ll
 
 let s x = x
 
  Так как мы работаем с деревьями, то и такая вся из себя generic функция
 тоже есть, и много где ещё нужна:
 
 let dotree f n fl fr t =
   match t with Tnone -> n |
    Tnode(v,l,r) -> f v (fl l) (fr r)
 
  Тогда, послойный поиск получится таким:
 
 let tfind2 f0 l0 =
   dolist (fun nl -> List.flatten (List.map (dotree
      (fun v l r -> f0 v; [l;r]) [] s s) nl)) [l0]
 
  IMHO, заметно читабельнее, чем предыдущий паскалеобразный вариант...
 
 --- ifmail v.2.15dev5
  * Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Recursion vs Iteration   Oleg I. Khovayko   17 Jan 2003 20:04:21 
 Re: Recursion vs Iteration   Vitaly Lugovsky   18 Jan 2003 00:21:25 
Архивное /ru.algorithms/14646755366e.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional