Cześć - zacząłem uczyć się algorytmów, potrzebuję pomocy osób które naprawdę rozumieją tą dziedzinę nauki.
Chodzi o pewne zagadnienie z książki którą czytam - przytoczę fragment.
"Rekurencyjna definicja silni
0! = 1
n! = n*(n-1)!, n >= 1, n należy do N
Odpowiadająca tej formule funkcja C++ ma następującą postać:
int silnia(int n)
{
if (n==0)
return 1;
else
return n*silnia(n-1);
}
Przyjmijmy dla uproszczenia założenie, bardzo zresztą charakterystyczne w tego typu zagadnieniach, że najbardziej czasochłonną operacją jest tutaj instrukcja porównania if. Przy takim założeniu czas, w jakim wykona się program możemy zapisać również w postaci rekurencyjnej:
T(0) = tc
T(n) = tc + T(n-1) --- dla n >= 1
T(0) -- czas wykonania funkcji dla danej wejściowej 0(zero)
tc -- czas wykonania jedenej instrukcji porównaia "
chodzi mi o zdanie ---> "Przyjmijmy dla uproszczenia założenie, bardzo zresztą charakterystyczne w tego typu zagadnieniach... "
Moje pytania brzmią -
Skąd wiedział jakie założenie trzeba przyjąć ??
Skąd wiedział że najbardziej czasochłonną operacją jest instrukcja porównania ??
Czemu akurat instrukcja porównania a nie np n*silnia(n-1) ????