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


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Vitaly Lugovsky                      2:5020/400     11 Mar 2002  15:53:03
 To : Andy Shevchenko
 Subject : Re: tail-recursion
 -------------------------------------------------------------------------------- 
 
 Andy Shevchenko <Andy.Shevchenko@f192.n465.z2.fidonet.org> wrote:
 
  mmcu>>>> (defun s-tr (x)
  mmcu>>>>   (labels ((rec (n acc)
  mmcu>>>>                          (if (= n 1)
  mmcu>>>>                            acc
  mmcu>>>>                            (rec (- n 1) (+ acc n)))))
  mmcu>>>>  (rec x 1)))
  AS>> Аналогично и у тебя. Это не хвостовая рекурсия, так как последняя функция
  AS>> у
  AS>> тебя не s-tr, а rec. 
 
  mmcu>> Все правильно. Рекурсивной функцией ведь является REC, а не S-TR и
  mmcu>>  именно в ней
  mmcu>> используется tail-recursion. А S-TR никак не рекурсивна, это да.
 AS>  А вот поэтому у тебя и нет хвостовой рекурсии.
 
  Hе надо гнать. Кстати, некоторые не шибко честные реализации Схемы
 (к примеру, старые версии Kawa), только в таком случае и раскроют
 хвостовую рекурсию в цикл, а для "глобальных" определений - фигушки.
 
 AS>  Так что:
  mmcu>> Учите матчасть. (c)
 
  Вот вот.
 
 AS> Должно быть что-то вроде
 
 AS> (defun recurrr (args)
 AS>   ... smth ...
 AS>   recurrr (args2)
 AS> )
 
  Сам хоть понял, что сказал? Какая на фиг разница? 
 
 -- 
 
    V.S.Lugovsky aka Mauhuur (http://ontil.ihep.su/~vsl) (UIN=45482254)
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: tail-recursion   Vitaly Lugovsky   11 Mar 2002 15:53:03 
Архивное /ru.linux/65771111d28d.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional