Хвостовая рекурсия

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Случай рекурсии, когда рекурсивный вызов функции происходит в конце её работы. Это используется в функциональных языках для оптимизации, так как такие функции легко преобразуются в итеративные алгоритмы, явное задание которых не предусмотрено декларативными языками.

Пример на Scheme:

"Неправильный параметр!"

Пример на Scala:

def factorial(x: BigInt) = {
 
  def f2(x: BigInt, sum: BigInt): BigInt =
    if (x == 1) sum else f2(x - 1, x * sum)
 
  f2(x, 1)
}

Пример на Erlang:

-module(test).
-export([fac/1]).
fac(N) -> fac(N,1).
 
fac(0,A) -> A;
fac(N,A) -> fac(N-1,N*A).
de:Endrekursion

en:Tail recursion fi:Häntärekursio fr:Récursion terminale ja:末尾再帰 lt:Uodeginė rekursija nl:Staartrecursie pl:Rekursja ogonowa sv:Svansrekursion tr:Kuyruk özyineleme

Личные инструменты

Served in 0.096 secs.