# Java rekursion minimum von ein array



## b1traxx (10. Jan 2014)

Habe folgende frage und zwar geht es um ein array den minimum zu finden, mit rekursion .
folgendes habe ich schon gebastelt 

```
public class Minimum {// Findin the minimum in an array Recursive

	public static double[] n = { 11, 10, 3, 12 }; // expample array

	public static double findMin(double[] numbers, int startIndex, int endIndex) { // method

		double min;// initialisinblabla for a help variable
		int currentIndex = startIndex + 1; //

		if (startIndex == endIndex)
			return numbers[startIndex];

		else {
			min = numbers[startIndex];
			if (min > numbers[currentIndex]) {
				min = numbers[currentIndex];
			}
			if (min < numbers[currentIndex]) {
				
					if(min<numbers[endIndex])
							return min;
			} else{
			
			
			findMin(numbers, currentIndex, endIndex);}
		}
		
		return min;
	}

	public static void main(String[] args) {

		System.out.println(Minimum.findMin(n, 0, 3));
```
jetzt wenn ich mit den debugger,das program durchlaufe ,findet er die drei une kommt zum letzten return ,und dann springt er wieder eine zeile nach oben ,ruft die methode(findMin) wieder auf und gibt mir die 10 aus ,ich bin seit 2 stunden hier und kann mein fehler nicht finden ,und ich will auch kein anderen kode ,die loesung dafuer hab ich schon , aber ich wollte wiesen wieso mein kode nicht funktuioniert 
Danke im vorraus 
LG


----------



## knilch (11. Jan 2014)

Hi,
dein Ansatz war schon mal gut, aber du beiden Variablen:
- double min
- int currentIndex
werden bei jedem Aufruf neu initialisiert. Der Wert, der beim n-1-ten Aufruf in diesen Variablen gesetzt wurde, ist beim n- ten Aufruf weg.
Die beiden Variablen musst du aus der Rekursuion nehmen und global definieren:

```
static double min = 0;// initialisinblabla for a help variable
	static int currentIndex = 0; //
```
Dann klappt es auch mit der Rekursion. Hier eine Möglichkeit:

```
public class Minimum {
	
	static double min = 0;// initialisinblabla for a help variable
	static int currentIndex = 0; //
	
	public static double[] n = { 11, 1, -3, -12 }; // expample array

	public static double findMin(double[] numbers, int startIndex, int endIndex) { // method

		currentIndex = startIndex + 1;

		if (startIndex == endIndex)
			return numbers[startIndex];

		else {
			min = numbers[startIndex];
			if (min > numbers[currentIndex]) {
				min = numbers[currentIndex];
			}
			if (min < numbers[currentIndex]) {

				if(min<numbers[endIndex])
					return min;
			} 
			else {
				findMin(numbers, currentIndex, endIndex);
			}
		}
		

		return min;
	}

	public static void main(String[] args) {

		System.out.println(Minimum.findMin(n, 0, 3));
	}
}
```


----------



## b1traxx (14. Jan 2014)

Vielen Dank, es hat jetzt endlich wieder geklapt  dankeschön


----------

