PDA

View Full Version : [JAVA] RICORSIONE


gangiaemi
08-12-2009, 11:06
Buongiorno a tutti,
vado subito al sodo, senza perdere tempo.
Ho realizzato una classe in java che mi permette di creare dei semplici polinomi, in questa forma : 2X^4 +3X^3 + X^2 + 5X + 2;

La classe polinomio utilizza Vector come contenitore del polinomio stesso.

Ora, ho un problema con la creazione della sua derivata.Non riesco a fare un metodo che prende il polinomio, crea la derivata prima e poi ricorsivamente crea tutte le derivate fino a quando praticamente ho l'ultima derivata che è un numero.

La classe Derivate, utilizza un vettore per contenere al suo interno i vettori che rappresentano le derivate dei polinomi.

Qualcuno puo aiutarmi gentilmente almeno per impostare il metodo ricorsivo?
Vi ringrazio anticipatamente

wingman87
08-12-2009, 14:01
Io lo imposterei in questo modo: creerei un metodo che verifichi l'uguaglianza tra due polinomi (un metodo equals), poi posto che tu abbia ad esempio il metodo
public Polinomio deriva(Polinomio p)
creerei un polinomio che contenga "0" e richiamerei il metodo deriva fintantoché il polinomio corrente sia diverso (!equals) da "0".

dierre
08-12-2009, 14:27
Io lo imposterei in questo modo: creerei un metodo che verifichi l'uguaglianza tra due polinomi (un metodo equals), poi posto che tu abbia ad esempio il metodo
public Polinomio deriva(Polinomio p)
creerei un polinomio che contenga "0" e richiamerei il metodo deriva fintantoché il polinomio corrente sia diverso (!equals) da "0".

Concordo :sisi:

classico passo base + passo induttivo :sisi:

gangiaemi
08-12-2009, 14:58
Grazie per la risposta.
Non è che mi sia molto chiara, forse mi sono spiegato male :
partendo da qui : x^3+ 3x^2 +5x +9

devo arrivare ad ottenere un array o un vettore che contiene tutte i polinomi derivati da quello di partenza , quindi :

2x^2 + 6x + 5;
4x + 6;
6;

Lo vorrei fare in maniera ricorsiva, ma mi risulta abbastanza difficile.
Se esiste un altro modo, va benissio lo stesso.
Grazie ancora :)

wingman87
08-12-2009, 19:23
Grazie per la risposta.
Non è che mi sia molto chiara, forse mi sono spiegato male :
partendo da qui : x^3+ 3x^2 +5x +9

devo arrivare ad ottenere un array o un vettore che contiene tutte i polinomi derivati da quello di partenza , quindi :

2x^2 + 6x + 5;
4x + 6;
6;

Lo vorrei fare in maniera ricorsiva, ma mi risulta abbastanza difficile.
Se esiste un altro modo, va benissio lo stesso.
Grazie ancora :)
In pseudocodice:
-Crei il polinomio "0"
-Crei la lista/vettore l da restituire
-t = deriva(p) //p è il polinomio in input, t è una variabile di appoggio
-Finché t è diverso da "0"
-Aggiungi t a l
-t=deriva(p)
-Restituisci l
Non è ricorsivo ma mi sembra più semplice così, se hai bisogno di farlo ricorsivo si può adattare, non è molto difficile