Pages: [1]   Go Down
Print
Author Topic: Errore esercizio sulla ricorsione  (Read 1056 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
kry84
Apprendista Forumista
**
Offline Offline

Posts: 154



« on: 27-05-2010, 14:51:27 »

Stavo svolgendo gli esercizi sulla ricorsione e ne ho trovato uno errato.
Posto il testo:

Si consideri il seguente algoritmo ricorsivo BinarySelect:

BinarySelect(A, a, b)
1. if (a==b) then return A[a];
2. c = floor ((a+b)/2);
3. S1 = S2 = 0;
4. for i=a to c do S1 = S1 + A;
5. for i=c+1 to b do S2 = S2 + A;
6. if (S1 > S2) then return BinarySelect(A, a, c);
7. else return BinarySelect(A, c+1, b);
Descrivere il corretto output ritornato dall'algoritmo se eseguito sui parametri (A, 1, 11), dove A corrisponde al seguente array:
[9, 3, 3, 5, 8, 9, 4, 10, 9, 1, 9]


Per il sistema dovrebbe restituire 10, io ho provato sia su carta che implementando il codice e la soluzione è 5 (quindi A[4], visto che gli indici dell'array partono da 1 nel sistema).
Logged
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #1 on: 27-05-2010, 15:20:46 »

A me risulta 8!! 
Logged
kry84
Apprendista Forumista
**
Offline Offline

Posts: 154



« Reply #2 on: 27-05-2010, 15:40:00 »

Hai ragione..avevo fatto un errore ###@@ nel for..il risultato è 8.. 
Logged
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #3 on: 27-05-2010, 15:44:52 »

 
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #4 on: 27-05-2010, 19:48:48 »

Quando si scrive del codice, è opportuno usare l'apposito TAG. Si sono perse, infatti, le indicizzazioni con i su A

Mi permetto di ricopiare il tuo codice in un apposito TAG

Code:
BinarySelect(A, a, b)
1. if (a==b) then return A[a];
2. c = floor ((a+b)/2);
3. S1 = S2 = 0;
4. for i=a to c do S1 = S1 + A[i];
5. for i=c+1 to b do S2 = S2 + A[i];
6. if (S1 > S2) then return BinarySelect(A, a, c);
7. else return BinarySelect(A, c+1, b);
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Pages: [1]   Go Up
Print
Jump to: