Witam! Mam taki jeden malutki problem jeśli chodzi o zadanie z matury z maja 2012 roku.
Treść brzmi tak:
Zadanie 1.
Dana jest liczba naturalna n>0 i tablica o różnych liczbach całkowitych a[1..n]. Rozważmy następującą rekurencyjną funkcję F z argumentem i będącym liczbą naturalną 1<=i<=n.
Funkcja F(i)
jeżeli i=n to
wynikiem jest n
w przeciwnym razie
j:=F(i+1)
jeżeli a[i]<a[j] wtedy
wynikiem jest i
w przeciwnym razie
wynikiem jest j
a) Dla danej 10-elementowej tablicy a=[5,1,8,9,7,2,3,11,20,15] podaj wynik wywołania funkcji F dla argumentu i.
i = 9; F(i) =?
i = 7; F(i) = ?
i = 5; F(i) = ?
Ogólnie to tak, zrobiłem to zadanie. Dla i=9 wyszło mi 10, dla i=7 wyszło mi 7 a dla i=5 wyszło mi 6.
Problem w tym, że później jest takie zadanie:
c) Ile porównan między elementami tablicy zostanie wykonanych przy wywołaniu F(512) dla n=2012?
No to patrząc na ten algorytm na górze to uznałem, że ilość powtórzen to bedzie 2012-512 czyli 1500.
Problem w tym, że tamto zadanie z podpunktu a robilem na jednym porównaniu a nie na kilku tj.
dla i = 9 zrobilem tak:
czy i=n? Nie, więc j=F(9+1)
Czy a[9] < a[10]? Czyli czy 20 < 15? Nie, więc wynikiem jest j = 10.
Ale rozwaliła mnie ta ilość powtórzeń w podpunkcie c. Ktoś podpowie jak rozwiązać zadanie z podpunktu a stosując się do tego, że tutaj są jakieś ilości powtórzeń tak jak w podpunkcie c?
Treść brzmi tak:
Zadanie 1.
Dana jest liczba naturalna n>0 i tablica o różnych liczbach całkowitych a[1..n]. Rozważmy następującą rekurencyjną funkcję F z argumentem i będącym liczbą naturalną 1<=i<=n.
Funkcja F(i)
jeżeli i=n to
wynikiem jest n
w przeciwnym razie
j:=F(i+1)
jeżeli a[i]<a[j] wtedy
wynikiem jest i
w przeciwnym razie
wynikiem jest j
a) Dla danej 10-elementowej tablicy a=[5,1,8,9,7,2,3,11,20,15] podaj wynik wywołania funkcji F dla argumentu i.
i = 9; F(i) =?
i = 7; F(i) = ?
i = 5; F(i) = ?
Ogólnie to tak, zrobiłem to zadanie. Dla i=9 wyszło mi 10, dla i=7 wyszło mi 7 a dla i=5 wyszło mi 6.
Problem w tym, że później jest takie zadanie:
c) Ile porównan między elementami tablicy zostanie wykonanych przy wywołaniu F(512) dla n=2012?
No to patrząc na ten algorytm na górze to uznałem, że ilość powtórzen to bedzie 2012-512 czyli 1500.
Problem w tym, że tamto zadanie z podpunktu a robilem na jednym porównaniu a nie na kilku tj.
dla i = 9 zrobilem tak:
czy i=n? Nie, więc j=F(9+1)
Czy a[9] < a[10]? Czyli czy 20 < 15? Nie, więc wynikiem jest j = 10.
Ale rozwaliła mnie ta ilość powtórzeń w podpunkcie c. Ktoś podpowie jak rozwiązać zadanie z podpunktu a stosując się do tego, że tutaj są jakieś ilości powtórzeń tak jak w podpunkcie c?