|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Apr 2008
Messaggi: 25
|
[JAVA] chiarimento sul return algoritmo ricorsivo booleano
Ciao a tutti, ho un dubbio riguardo ad un algoritmo ricorsivo booleano. Se io ho un algoritmo ricorsivo su un albero binario e lo implemento nel seguente modo:
static boolean metodoR (AlberoB A,int x) { if (A==null) return false; se io a questo punto del metodo faccio un return al metodo stesso, quindi facendolo diventare metodo ricorsivo, la funzione mi può restituire true anche senza che io faccio return true? tipo cosi... return x==a.val() || metodoR(A.sin(),x) ,metodoR(a.des(),x); il metodo val() restituisce la radice dell albero... e sin e des restituiscono il sottoalbero sinistro e destro.. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
non ho capito un tubo di quel che vuoid ire; puoi per favore provare a esprimerti meglio?
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Quindi se richiami subito dopo il return un metodo che torna un boolean (oppure un'espressione più complessa che comunque alla fine è un'espressione booleana) allora la risposta è sì. Nel tuo caso, richiamando il metodo stesso dopo il return stai in effetti effettuando una chiamata ricorsiva. Non aver paura di sperimentare: tanto se l'espressione che scrivi dopo il return desse come tipo di risultato un non-boolean il compilatore si lamenterebbe e tu lo sapresti subito.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Apr 2008
Messaggi: 25
|
Ok provo ad esprimermi meglio... vi scrivo tutto il metodo...
static boolean appare(Albero A,int x) { if (A==null) return false; return x==A.val() || appare(A.sin(),x) || appare(A.des(),x); } static boolean metodoR(Albero A,int x) { if (A==null) return false; return appare(A.sin(),x) && appare(A.des(),x) || metodoR(A.sin(),x) || metodoR(A.des(),x); } La funzione metodoR deve restituire true se l'intero x è presente sia a sinistra che a destra dell albero.. Facendo il return in quel modo sulla funzione metodoR, essa mi restituisce true? |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Sep 2006
Città: ~
Messaggi: 146
|
Quote:
P.S.:Ma poi... è a o A? Attenzione che è diverso: tutti i linguaggi di programmazione (escluso VisualBasic
__________________
Computers are like conditioned air: they work fine 'till you open windows.
|
|
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Apr 2008
Messaggi: 25
|
scusa è A..! quindi anche se non metto nel return true, la funzione nel caso in cui x==A.val() è vera restituisce true ugualmente?
|
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Sep 2006
Città: ~
Messaggi: 146
|
Quote:
Codice:
x==A.val()
__________________
Computers are like conditioned air: they work fine 'till you open windows.
|
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Apr 2008
Messaggi: 25
|
Senti un altra kosa....
Se nel caso il return del primo if è true, se faccio sempre lo stesso secondo return questa volta mi restituisce false in automatico? Mi sai dire la differenza che c'è tra && e || nell ultimo return? static boolean uguali(Albero A,Albero B) { if (A==null && B==null) { return true; if (A.val()!=B.val()) return false; return uguali(A.sin(),B.sin()) && uguali(A.des(),B.des()); |
|
|
|
|
|
#9 | ||
|
Member
Iscritto dal: Sep 2006
Città: ~
Messaggi: 146
|
Quote:
Quote:
Codice:
a && b Codice:
a || b
__________________
Computers are like conditioned air: they work fine 'till you open windows.
|
||
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
sei arrivato a fare operazioni sugli alberi senza sapere la differenza tra and e or?
__________________
Khelidan |
|
|
|
|
|
#11 |
|
Junior Member
Iscritto dal: Apr 2008
Messaggi: 25
|
ma scusate ma a || b nn può restituire true se una tra a e b è true?
|
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Sep 2006
Città: ~
Messaggi: 146
|
Quote:
Quando non restituisce false, restituisce true.
__________________
Computers are like conditioned air: they work fine 'till you open windows.
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:06.




















