C++ vysvetlenie ...

Programovacie jazyky, rady, poradňa...
kotlas666
Light Star
Light Star
Príspevky: 238
Registrovaný: 27 sep 2006, 12:48

C++ vysvetlenie ...

Príspevok od používateľa kotlas666 »

Zdravim vas
Som uplny novacik v programovani v C++ a potreboval by som "co najjednoduchsie" vysvetlit spodny return:
#include<iostream>
using namespace std;
typedef short USHORT;
typedef long ULONG;
ULONG ZiskajMocninu(USHORT n, USHORT mocnina);
int main()
{
USHORT cislo,mocnina;
ULONG odpoved;
cout << "cislo je: \n";
cin >> cislo ;
cout << " na kolkatu? \n";
cin >> mocnina ;
odpoved=ZiskajMocninu(cislo,mocnina);
cout << cislo << " na " << mocnina << " -tu je " << odpoved << endl;
system ("PAUSE");
return 0;
}
ULONG ZiskajMocninu(USHORT cislo, USHORT mocnina)
{
if (mocnina == 1)
return cislo;
else
return (cislo*ZiskajMocninu(cislo, mocnina-1));
}
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Re: C++ vysvetlenie ...

Príspevok od používateľa jorg22 »

Funkcia ZiskajMocninu pouziva rekurziu. To znamena ze vola sama seba a funguje to asi takto:

Chceme vediet kolko je 2 na 4 (2^4)

funkcia
ZiskajMocninu(2, 4);
nam vrati 16 lebo:
vo funkcii sa znova zavola funkcia ZiskajMocninu ale s parametrami

Kód: Vybrať všetko

ZiskajMocninu(2, 4-1); -> vrati 2*(8) = 16 //To je vysledok
ZiskajMocninu(2, 4-1); -> vrati 2*(4) = 8
ZiskajMocninu(2, 4-2); -> vrati 2*(2) = 4
ZiskajMocninu(2, 4-3); -> vrati 2 lebo 4-3 == 1
jednoducho funkcia vola samu seba a ako prva skonci funkcia s tymito parametrami ZiskajMocninu(2, 4-3); lebo je najvnutornejsia a az potom sa moze dokoncit povodna funkcia, ktora nam vrati vysledok.

Neviem ci je to dost zrozumitelne napisane ale rekurzivne funkcie sa tazko vysvetluju pokial este nemas osvojenu logiku programovania.
kotlas666
Light Star
Light Star
Príspevky: 238
Registrovaný: 27 sep 2006, 12:48

Re: C++ vysvetlenie ...

Príspevok od používateľa kotlas666 »

jorg22 napísal:Funkcia ZiskajMocninu pouziva rekurziu. To znamena ze vola sama seba a funguje to asi takto:

Chceme vediet kolko je 2 na 4 (2^4)

funkcia
ZiskajMocninu(2, 4);
nam vrati 16 lebo:
vo funkcii sa znova zavola funkcia ZiskajMocninu ale s parametrami

Kód: Vybrať všetko

ZiskajMocninu(2, 4-1); -> vrati 2*(8) = 16 //To je vysledok
ZiskajMocninu(2, 4-1); -> vrati 2*(4) = 8
ZiskajMocninu(2, 4-2); -> vrati 2*(2) = 4
ZiskajMocninu(2, 4-3); -> vrati 2 lebo 4-3 == 1
jednoducho funkcia vola samu seba a ako prva skonci funkcia s tymito parametrami ZiskajMocninu(2, 4-3); lebo je najvnutornejsia a az potom sa moze dokoncit povodna funkcia, ktora nam vrati vysledok.

Neviem ci je to dost zrozumitelne napisane ale rekurzivne funkcie sa tazko vysvetluju pokial este nemas osvojenu logiku programovania.
hm....tak dik....zaciatky byvaju tazke :-(
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Re: C++ vysvetlenie ...

Príspevok od používateľa jorg22 »

Zacni s nicim jednoduchsim, podla mna su rekurzivne funkcie tazke na pochopenie, niekedy sa k tomu vratis a lahsie to pochopis.
Napísať odpoveď