Este corect sintactic Java. Dar eu nu văd cum ar putea fi, eventual, să faci ceea ce intenționați.
Se pare că parametrul „elementul“ este lucrul pe care îl căutați și câmpul „prima“ în clasa curentă este rădăcina arborelui binar.
Este neclar dacă cheia pentru arborele binar și de căutare (în clasa Element) este „activ“ sau „date“. „Mai puțin decât“ testul utilizează „activ“, în timp ce „mai mare decât“ „date“ utilizări de testare. Se pare că ambele linii ar trebui să utilizeze același domeniu. S - ar putea fi faptul că una dintre aceste două domenii ( „active“ sau „date“) ar trebui să nu se face referire în această metodă , la toate. Poate ultima linie a metodei ar trebui să fie pur și simplu „return true;“?
(Bănuiesc că „starea de oprire“ și „codul nu este simetrică“ răspunsurile de mai sus sunt ambele incorecte, dar am putea fi greșit. Este greu de spus doar cu codul dat.)
Sunt de acord că looping infinit este probabil: Bănuiesc că aveți nevoie pentru a crea o a doua funcție de „căutare“ care acceptă doi parametri „elementul“ - unul dintre ei fiind lucru pentru a căuta (cum ar fi parametrul curent „elementul“), iar cealaltă următorul element pentru a căuta - echivalentul curentului variabil „c“ locale. Mi-ar face „Extras metoda“ refactorizarii pe tot în corpul metodei curente „căutare“, cu excepția primei linii, apoi modificați cele două apeluri recursive pentru a utiliza noua metodă.
(O parte din aceasta este speculativă, bazată pe mine ghicitul ceea ce doriți sau intenționați, având în vedere informațiile limitate. Așa că am putea, desigur, să fie destul de greșit.)