001    package de.hska.info1.uebung.rekursion;
002    
003    /**
004     * Rekursive Minimussuche.
005     * 
006     * @author Christian Pape
007     */
008    public class Minimum {
009    
010        /**
011         * Sucht die kleinste Zahl im Feld a und
012         * gibt sie zurück.
013         */
014        public int sucheMinimum(int [] a) {
015            return sucheMinimum(a, 0);
016        }
017        
018        /**
019         * Sucht die kleinste Zahl rekursiv im Feld a
020         * innerhalb des Bereichs links bis zum Ende.
021         */
022        private int sucheMinimum(int [] a, int links) {
023            if (links == a.length - 1) { // Rek.abbruch
024                // nur noch ein Element im rechten Bereich
025                return a[links];
026            } else {
027                // suche rekursiv eins weiter rechts im Bereich
028                int minimumRechts = sucheMinimum(a, links + 1);
029                if (minimumRechts < a[links]) {
030                    return minimumRechts;
031                } else {
032                    return a[links];
033                }
034            }
035             
036        }
037    }