eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjak zmusić funkcję rekurencyjną bo bycia ogonową (F#)Re: jak zmusić funkcję rekurencyjną bo bycia ogonową (F#)
  • Data: 2011-02-11 10:15:07
    Temat: Re: jak zmusić funkcję rekurencyjną bo bycia ogonową (F#)
    Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Feb 10, 8:10 pm, Jakub Owczarski <j...@g...com> wrote:
    > Witam.
    > Próbuję zrozumieć rekurencję ogonową.
    > Kiedy patrzę na najprostsze przykłady (z użyciem akumulatora), to niby
    > to rozumiem, ale kiedy próbuję z funkcją troszkę bardziej
    > skomplikowaną niż silnia to wymiękam.
    > Konkretnie wymiękłem na takiej prostej implementacji insert sorta, czy
    > da się to zmusić do bycia tail-recursive?
    > Gdyby ktoś zechciał mi to jakoś opisowo wytłumaczyć na tym przykładzie
    > to będę bardzo wdzięczny
    >
    > let rec insertSort l =
    >     let rec insert elem lst =
    >         match lst with
    >         | [] -> [elem]
    >         | head::tail -> if elem < head then elem::head::tail else
    > head::(insert elem tail)
    >     match l with
    >     | [] -> []
    >     | f::r -> insert f <| insertSort r

    Nie znam F# więc może źle to odczytuję, ale wygląda, jakbyś
    przekazywał wynik rekurencyjnie wywoływanego insertSort jako argument
    - czy się mylę? Jeśli tak, to to nie jest rekurencja ogonowa, tylko
    zwykła rekurencja.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: