Pages: [1]   Go Down
Print
Author Topic: problema con ricorsione  (Read 659 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Giovi89
Apprendista Forumista
**
Offline Offline

Posts: 273


« on: 16-04-2009, 23:20:49 »

Salve ragazzi ho provato a svolgere questo esercizio sulla ricorsione ma mi da errore a run time:
Code:
class ordinalista extends lista
{
lista a=new  lista();
public lista ordina(lista n)
{
int b=n.deletehead();
if(b%2==0){
a.inserttail(b);
return ordina(n);}
else{
a.inserthead(b);
return ordina(n);
}
}

public static void main(String [] args)
{
ordinalista c=new ordinalista();
lista b=new lista();
b.inserttail(3);
b.inserttail(7);
b.inserttail(8);
b.inserttail(1);
b.inserttail(4);
c.ordina(b);
b.stampa();
}
}
[/tt]
il testo è il seguente:
Scrivere un metodo ricorsivo che data una lista di interi
riordini L in modo che tutti gli elementi dispari
precedano, nello stesso ordine in cui comparivano
inizialmente, tutti gli elementi pari (es. L=3,7,8,1,4 
si ottiene L = 3,7,1,8,4)

grazie in anticipo...
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 #1 on: 18-04-2009, 00:22:00 »

Code:
public lista ordina (lista n)
{
int b = n.deletehead ();

if (b % 2 == 0)
{
a.inserttail(b);
return ordina(n);
}
else
{
a.inserthead(b);
return ordina(n);
}
}
In che modo questo codice dovrebbe rappresentare un algoritmo ricorsivo?
In particolare non c'è un caso base (tutti i rami dell'esecuzione portano a una nuova chiamata a ordina).
Questo è sufficiente per affermare che il metodo ordina non termina, cioè che va in loop infinito.

Sistema questo aspetto e riprova. 
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: