Gå til innhold

Metode som multipliserer alle tallene fra 1 til n


Anbefalte innlegg

Stemmer du har rett Mr.Garibaldi. Min feil, den rekursive metoden min var ikke halerekursiv. Jeg skrev en ny en som jeg vet er halerekursiv med og den gir nesten de samme tidene som den rekursive. Altdå 2 ganger tregere Både med java og gcj.

 

static int fakTail(int n, int accumulator)
{
    return n == 1 ? accumulator : fakTail(n-1, accumulator * n);
}

Lenke til kommentar
Videoannonse
Annonse
Send en mail til Sun da, java 5.0 optimerer ikke bort halerekursjon, bare test løsningsforslaget mitt ovenfor.

IBM sin JVM gjør dette JIT, merkelig at Sun ikke gjør det, men jeg tror deg så gjerne.

Foresten heter slike språk som du refferer til Funksjonelle språk

Jeg vet veldig godt hva funksjonelle språk er ja :)

 

Og ja, off-topic er det vel kanskje blitt.

Lenke til kommentar
Stemmer du har rett Mr.Garibaldi. Min feil, den rekursive metoden min var ikke halerekursiv. Jeg skrev en ny en som jeg vet er halerekursiv med og den gir nesten de samme tidene som den rekursive. Altdå 2 ganger tregere Både med java og gcj.

 

static int fakTail(int n, int accumulator)
{
    return n == 1 ? accumulator : fakTail(n-1, accumulator * n);
}

7019302[/snapback]

 

Pussig. Takk for at du gadd å undersøke dette såpass grundig!

Jeg lenger meg langstrak, og skal ikke lenger foreslå rekursive metoder i java, når man kan bruke en løkke. (Selv om jeg synes det ser penere ut ;))

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...