Első 15 db Fibonacci-szám kiíratása C-ben?
Elakadtam egy olyan feladatnál, ahol az a cél, hogy TÖMB, és FÜGGVÉNYEK használata NÉLKÜL kell megoldanom azt, hogy a program kiírja az első 15 Fibonacci számot. Tömbbe rém egyszerű persze, de a nélkül fogalmam sincs, hogy mihez kezdjek. Odáig jutottam csak, hogy egymásba ágyazott for ciklusokat írtam fel, ahol a belső ciklus mindig a külső ciklus mögött jár eggyel (tehát míg a külső ciklus i-edik ciklusban tart, addig a belső az (i-1)-edikben), így valahogy meg tudnám azt oldani, hogy 2 változóban el tudjam tárolni az aktuális szám előtti 2 db számot is. (amiket össze kell adni ugyebár, hogy megkapjam az aktuális számot)
Ha valaki érti egyáltalán, hogy miről beszélek, szóljon, hogy jó irányban vagyok, vagy teljesen más megoldást kell kitaláljak?
Amúgy mindössze csak erre az összefüggésre nem jöttem rá:
c = a + b;
a = b;
b = c;
Ha még agyalok rajta egy ideig, akkor biztos leesett volna, de nem akartam ilyen vacak feladatnál megakadni. Inkább haladok a többi anyaggal.
Én is idepofátlankodok.
Minden rekurziót fel lehet írni ciklusként. A más kérdés, hogy a kód tömörsége céljából érdemes a fibo-t rekurzióban felírni.De alkalmazhattad volna a nem rekurzív képletet is.
fibo(n)=((1+sqr(5))/2)^n - ((1-sqr(5))/2)^n/ sqr(5)
Ezt is beírhattad volna a ciklusba, és szintén megvan az eredmény.
De mint mondtam, minden rekurziót fel lehet írni egy ciklussal.
"fibo(n)=((1+sqr(5))/2)^n - ((1-sqr(5))/2)^n/ sqr(5)
Ezt is beírhattad volna a ciklusba, és szintén megvan az eredmény."
Ezt már pont nem kell beírni a ciklusba, mert ez a fibonacci egzakt képlete, ami nem igényel rekurziót: n-ből kifejezed f(n)-t, f(n-1) nélkül. Persze a pontatlan számábrázolás miatt nem lesz pontos az eredmény, de alacsony n esetén jó közelítéssel igen, és könnyű utána megkeresni, hogy melyik egész az, amelyiket kerestél.
Dehát C-ben nincs is Math.Floor :P
Amúgy igazad van, a ciklust én néztem be.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!