Hallo zusammen,
ich habe eine Frage zu rekursiven Funktionen in Java, genauer zur Funktionsweise des return Statements. Wenn ich die folgende Funktion in eclipse ausführen lasse, wird mir irgendwann mein "test" geprinted, ich weiß also, dass das Programm innerhalb der Schleife angekommen ist. Jetzt hätte ich gerne, dass die gesamte Funktion abbricht und mir mein a zurück gibt, es bricht aber glaube ich nur die Schleife ab, jedenfalls wird mir -6 aus dem letzten return statement zurückgegeben. Kann mir jemand sagen, was genau hier passiert und was ich tun muss, um im Fall arr[a]=key einfach a als return wert der kompletten Funktion erhalte?
public int function(double arr[], int first, int last, double key) {
if (last >= first) {
int a= first+halfOrRoundedUpHalf(last-first);
if (arr[a] == key) {
System.out.println("test");
return a;
}
else if (arr[a] < key ) {
last=a;
}
else if (arr[a] > key ) {
first=a;
}
if(last==first) {
if(arr[last]==key) {
return last;
}
else {
return -1;
}
}
funktion(arr,first,last,key);
}
return -6;
}
Vielen Dank schonmal
ich habe eine Frage zu rekursiven Funktionen in Java, genauer zur Funktionsweise des return Statements. Wenn ich die folgende Funktion in eclipse ausführen lasse, wird mir irgendwann mein "test" geprinted, ich weiß also, dass das Programm innerhalb der Schleife angekommen ist. Jetzt hätte ich gerne, dass die gesamte Funktion abbricht und mir mein a zurück gibt, es bricht aber glaube ich nur die Schleife ab, jedenfalls wird mir -6 aus dem letzten return statement zurückgegeben. Kann mir jemand sagen, was genau hier passiert und was ich tun muss, um im Fall arr[a]=key einfach a als return wert der kompletten Funktion erhalte?
public int function(double arr[], int first, int last, double key) {
if (last >= first) {
int a= first+halfOrRoundedUpHalf(last-first);
if (arr[a] == key) {
System.out.println("test");
return a;
}
else if (arr[a] < key ) {
last=a;
}
else if (arr[a] > key ) {
first=a;
}
if(last==first) {
if(arr[last]==key) {
return last;
}
else {
return -1;
}
}
funktion(arr,first,last,key);
}
return -6;
}
Vielen Dank schonmal