2016-03-29 14 views
-2

Çözmek istediğim bir sorunum var. Minimum tamsayı elde etmek istediğim bir dizi tamsayım var. Ayrıca, uyulması gereken bir fonksiyon tanımına da sahibim. Çözümümde bir döngü veya statik bir değişken kullanmamalıyım. Bunu Nasıl Çözebilirim? İşte benim işlevim.Döngüsel özyineleme işlevi

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

Lütfen yardım edin. Bu uygulamayı bir döngü ile denedim.

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

Ben akışları kullanarak Java 8 için buraya çözüm koyacağız. Sadece durumda: 'Arrays.asList (sayılar) .stream(). Min (Tamsayı: compareTo) .get();' –

cevap

1

Yineleme kullanıldığında göz önünde bulundurmanız gereken ilk şey, mevcut durumdur; fonksiyonu olacaktır ne zaman

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

var demektir Bu çalışması gerekir:

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); 
}