funkcja rekurencyjna, zapis iteracyjny

0

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

tablicy a [ 5,1,8,9,7, 2,3,11, 20,15]

d ) podaj funkcję iteracyjnie

czy to może być tak, jeśli nie, to co jest źle hmm ?
1.
begin
if i ==n then

go to step # 4
else
go to step #2
2.
j:=i+1
3. if
a [ i ] < a [ j]
then go to step # 4
else go to step #5
4. write i
end.
5. write j
end.

1

o, wypróbuję "Obserwuj".

0

po pierwsze za takie używanie go to powinni wieszać za jaja. po drugie, widać że nie rozumiesz co robi funkcja F(i). w poprzednim temacie napisałem Ci co robi. szuka indeksu najmniejszego elementu tablicy o indeksie nie mniejszym niż i. skoro algorytm jest iteracyjny to wypadało by zrobić jakąkolwiek pętle nieprawdaż? nie sugeruj się kodem funkcji rekurencyjnej tylko zrozum co robi i napisz to iteracyjnie. wystarczy walnąć pętlę od i do n i porównywać aktualny element z elementem oznaczonym jako najmniejszy.

pseudokod:

1. min := i
2. i := i+1
3. while i <= n do
4.     if a[i] < a[min] then
5.          min = i
6.     i := i+1
7. write min

lista kroków jeżeli bardzie preferujesz taką postać:

1. min := i
2. i := i+1
3. if i > n then goto 6
4. if a[i] < a[min] then min := i
5. goto 2
6. write min
0
  1. min := i
  2. i := i+1
  3. if i > n then goto 6
  4. if a[i] < a[min] then min := i
  5. goto 2
  6. write min

generalnie do kroku numer 6 przechodzimy albo z kroku numer 3 jeśli prawda,
albo jeśli prawda z kroku numer 4 hmm ?
tzn.
jeśli w kroku numer 4 jest fałsz idziemy do kroku numer 5, a jak prawda do numer 6, tak ?

czy też zawsze do kroku numer 5 , hmm ?

0

http://i.imgur.com/JakTh.png prościej się nie da

1 użytkowników online, w tym zalogowanych: 0, gości: 1