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#)
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!new
    s.nask.pl!news.nask.org.pl!plix.pl!newsfeed1.plix.pl!newsfeed00.sul.t-online.de
    !t-online.de!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.g
    iganews.com!postnews.google.com!d28g2000yqc.googlegroups.com!not-for-mail
    From: Andrzej Jarzabek <a...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: jak zmusić funkcję rekurencyjną bo bycia ogonową (F#)
    Date: Fri, 11 Feb 2011 02:15:07 -0800 (PST)
    Organization: http://groups.google.com
    Lines: 28
    Message-ID: <c...@d...googlegroups.com>
    References: <d...@1...googlegroups.com>
    NNTP-Posting-Host: 195.11.67.225
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    X-Trace: posting.google.com 1297419307 23933 127.0.0.1 (11 Feb 2011 10:15:07 GMT)
    X-Complaints-To: g...@g...com
    NNTP-Posting-Date: Fri, 11 Feb 2011 10:15:07 +0000 (UTC)
    Complaints-To: g...@g...com
    Injection-Info: d28g2000yqc.googlegroups.com; posting-host=195.11.67.225;
    posting-account=jr5y-woAAAAWidgVjrSJ6j8m650CTb-v
    User-Agent: G2/1.0
    X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13
    (KHTML, like Gecko) Chrome/9.0.597.94 Safari/534.13,gzip(gfe)
    Xref: news-archive.icm.edu.pl pl.comp.programming:188703
    [ ukryj 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: