2016-03-29 15 views
-2

私は解決したい問題があります。私は最小整数を取得する整数の配列を持っています。私はまた守らなければならない関数定義も与えられています。私は私のソリューションでループまたは静的変数を使用するはずです。これをどうすれば解決できますか?ここに私の機能があります。ループのない再帰関数

public static int findMin(int[] numbers, int startIndex, int endIndex){} 

助けてください。私はこの実装をループで試しました。

public static int findMin(int[] numbers, int startIndex, int endIndex) { 
    int min = 0; 
    for (int count = startIndex; count <= endIndex; count++) { 
     if (numbers[count] < min) { 
      min = numbers[count]; 
     } 
    } 
    return min; 
} 
+0

私はストリームを使用してJava 8のためにここにソリューションを配置します。ちょうどの場合: 'Arrays.asList(numbers).stream()。min(Integer :: compareTo).get();' –

答えて

1

再帰を使用するときにまず考慮すべきことは、存在状態です。機能がなるとき

public static int findMin(int[] numbers, int startIndex, int endIndex) { 
     if(startIndex == endIndex){ 
      return numbers[startIndex]; 
     } 
     int min = findMin(numbers, startIndex+1, endIndex); 
     return numbers[startIndex] < min ? numbers[startIndex] : min ; 
} 
0

が存在することを意味する。この作業をする必要があります:

int min(int a[]){ //Here you only need to supply the array. 
    return min(a, 0, a[0]); 
} 

int min(int[] a, int i, int min) 
{ 
    if(i==a.length-1) 
     return (a[i]<min)?a[i]:min; 
    else 
     return min(a, i+1, (a[i]<min)?a[i]:min); 
}