Mit csinál a következő program?
Figyelt kérdés
#include <stdio.h>
#include <stdlib.h>
unsigned int fakt(unsigned int n) {
if (n == 1)
return 1;
else
return n*fakt(n-1);
}
int main(void) {
unsigned int nf;
nf = fakt(4);
printf("%d\n", nf);
return 0;
}
2012. jan. 7. 12:53
1/6 anonim válasza:
Kiszámolja a faktoriális számokat, majd kiírja azokat.
2/6 A kérdező kommentje:
így fut le a progi ?
nf = 4.
ez bekerul a funkcioba, mivel nagyobb mint 1 ezert az else ág folyik le. 4 * (4 -1) = 4*3 = 12
a program viszont 24 et ad
de ha tovabb folytatodik:
4 * (3 -1) = 4*2 = 8
4 * (2 -1) = 4*1 = 4
ez egyutt 24.
De a miert folyik le tobbszor az if?
ez nem ciklus...a return pedig idaig ugy tudtam csak arra valo,hogy erteket adjon vissza h rendessen le e futott a parancs vagy nem. A funkcioban pedig ertekked ad vissza a main nek.
2012. jan. 7. 13:35
3/6 _Jessy_ válasza:
A funkció return értéke arra való, hogy visszaadjon valamilyen értéket. Nem feltétlenül azt, hogy sikeresen lefutott-e, abban az esetben elég lenne egy logikai visszatérési érték is. Az if(...) pedig azért hajtódik végre többször is, mert ha megfigyeled, akkor azt látod, hogy a végén a függvény meghívja saját magát.
4/6 A kérdező kommentje:
Köszi én is erre "gyanakodtam" igy olyan mint egy ciklus :) eleg cseles,okos.
2012. jan. 7. 14:03
6/6 _Jessy_ válasza:
Jelen esetben nem túl praktikus, ha elég nagy szám faktoriálisát számolod vele stack overflow lesz belőle :) Ilyesmit olyan helyen használnak, ahol kevés az iterációk száma...
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
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!