Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

F# - Fibonacijev niz ogranicen velicinom elementa

[es] :: .NET :: F# - Fibonacijev niz ogranicen velicinom elementa

[ Pregleda: 2027 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shadowed
Vojvodina

Član broj: 649
Poruke: 12850



+4784 Profil

icon F# - Fibonacijev niz ogranicen velicinom elementa30.01.2015. u 09:24 - pre 112 meseci
Igram se malo u poslednje vreme F#-om pa sam se malo zaglavio Naravno, najnezgodniji deo je izbacivanje imperativnog programiranja iz glave
Evo problema koji me trenutno muci. Racunanje fibonacijevog niza do n-tog elementa je jednostavno:
Code:

let rec fibonacci n =
    match n with
    | x when x <= 1 -> 1
    | _ -> (fibonacci (n-1) + fibonacci (n-2))


I mogu ga ispisati sa:
Code:

let rec PrintFib n =
  match n with
  | 1 -> printfn "%A" (fibonacci 1)
  | _ -> printfn "%A" (fibonacci n)
         PrintFib (n-1)

doduse, obrnutim redosledom sto takodje nisam uspeo da skontam kako da uradim da ide od najmanjeg, ali se oko toga nisam ni trudio (jos uvek)

Medjutim, ako je zadatak "prikazati sve elemente fib niza manje od N" onda nastaje problem.
Zapravo, cini mi se da je u oba slucaja problem sto se ide od najveceg ali ne kontam kako da okrenem..
Neki hint bi dobro dosao (ovo mi je vise kao mozgalica, nije mi za neki projekat)
Naravno, znam da mogu imperativno da uradim i u F#-u ali where the fun in that
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: F# - Fibonacijev niz ogranicen velicinom elementa30.01.2015. u 12:01 - pre 112 meseci
Mislim da ne mozes rekurzivno, (mozda neka forward recursive muljavina) i bez da vuces prethodnu vrednost da bi je vratio kad izadjes iz opsega.

Ovo je imho idealan zadatak za "beskonacne" sekvence:

Code (csharp):

let fibMax maxN =
    Seq.unfold (fun (a, b) -> Some(a, (b, a + b))) (0, 1)
    |> Seq.pairwise
    |> Seq.find(fun p -> fst p < maxN && snd p >= maxN)
    |> fst
 



[Ovu poruku je menjao mmix dana 30.01.2015. u 14:16 GMT+1]
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: F# - Fibonacijev niz ogranicen velicinom elementa

[ Pregleda: 2027 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.