Es ist syntaktisch korrektes Java. Aber ich sehe nicht, wie es vielleicht tun könnte, was Sie beabsichtigen.
Es scheint, dass die ‚Element‘ Parameter ist die Sache, die Sie suchen und das ‚erste‘ Feld in der aktuellen Klasse ist die Wurzel des binären Baumes.
Es ist unklar , ob der Schlüssel für den binären Baum und suchen (in der Klasse Element) ist ‚Vermögenswert‘ oder ‚Daten‘. Der ‚kleiner als‘ Test verwendet ‚Vermögenswert‘, während der ‚größer als‘ Testzwecke ‚Daten‘. Es scheint wahrscheinlich , dass beide Linien das gleiche Feld verwendet werden soll. Es könnte sein , dass eines dieser beiden Felder ( ‚Asset‘ oder ‚Daten‘ genannt ) sollte nicht bei allen in diesem Verfahren verwiesen werden. Vielleicht nur wurde die letzte Zeile des Verfahrens sollte ‚return true;‘?
(Ich vermute, dass die „Stoppbedingung“ und der „Code ist nicht symmetrisch“ Antworten oben sind beide falsch Aber ich könnte falsch sein. Es ist schwer, nur mit dem Code gegeben zu sagen.)
Ich bin damit einverstanden, dass eine unendliche Looping ist wahrscheinlich: Ich vermute, dass Sie eine zweite ‚Suche‘ Funktion erstellen müssen, die zwei ‚Element‘ Parameter akzeptiert - man das Ding ist zu suchen (wie die aktuelle ‚Element‘ Parameter) und die andere das nächste Element zu suchen, - das Äquivalent von aktuellen lokalen variablen ‚c‘. Ich würde tun, um das „Methode Extract“ Refactoring auf allem im Körper der aktuellen ‚Suche‘ Methode mit Ausnahme der ersten Zeile, und dann die beide rekursiven Aufrufe ändern, um die neue Methode zu verwenden.
(Ein Teil davon ist spekulativ, basierend auf mich raten, was Sie wollen oder beabsichtigen, begrenzte Informationen gegeben. So konnte ich, natürlich, ganz falsch sein.)