Podać algorytm iteracyjny i rekurencyjny obliczający silnię z liczby naturalnej. Jakie są koszty czasowe obu algorytmów ze względu na mnożenie. Odpowiedź uzasadnij obliczeniami.
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Koszty ze względu na mnożenie są identyczne. Bo mnożenie tak, czy tak wykonać trzeba.
Iteracyjny:
while n>0
wynik = wynik*n
n = n-1
return wynik
Rekurencyjny:
silnia(n:Int):
if n>0
return n*silnia(n-1)
else
return 1
Jest tu wykonywane dokładnie tyle samo czynności, jedyną różnicą jest stopień wykorzystywania stosu, który oczywiście w przypadku rekurencji jest dużo większy, proporcjonalnie głęboki do stopnia silnii.