|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/65771111d28d.html, оценка из 5, голосов 10
|