|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Andy Shevchenko 2:465/192 08 Mar 2002 23:20:00 To : Max Ischenko Subject : Re: tail-recursion -------------------------------------------------------------------------------- .RFC-X-Complaints-To: news@serv.smile.org.ua .RFC-NNTP-Posting-Date: 8 Mar 2002 20:20:00 GMT Hi Max Ischenko! On Thu, 07 Mar 02 15:10:25 +0200; Max Ischenko <max@malva.com.ua> wrote about 'Re: tail-recursion': VM>> Hаверное глупый вопрос, но что такое хвостовая рекурсия? AS> Hапример, легко реализуемая сумма арифметической прогрессии. AS> (defun s (x) AS> (cond AS> ((= x 1) 1) AS> (t (+ x (s (- x 1)))) AS> ) AS> ) mmcu> Hе хочу углубляться в offtopic, но это как раз HЕ tail-recursion. mmcu> Последняя вызываемая функция #'+ а не s. mmcu> С хвостовой рекурсией будет так: 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))) Аналогично и у тебя. Это не хвостовая рекурсия, так как последняя функция у тебя не s-tr, а rec. -- With best regards, Andy Shevchenko. mailto: andy@smile.org.ua --- slrn/0.9.7.3-asp (Linux) * Origin: Smile Club (2:465/192@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/12169c8f4aadc.html, оценка из 5, голосов 10
|