Kezdőoldal » Számítástechnika » Programozás » Mit csinál a következő program?

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:
100%

Kiszámolja a faktoriális számokat, majd kiírja azokat.

[link]

2012. jan. 7. 13:08
Hasznos számodra ez a válasz?
 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:
100%
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.
2012. jan. 7. 13:43
Hasznos számodra ez a válasz?
 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
 5/6 anonim ***** válasza:
Ez a rekurzió :)
2012. jan. 7. 14:53
Hasznos számodra ez a válasz?
 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...
2012. jan. 7. 17:16
Hasznos számodra ez a válasz?

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!