2016-03-29 29 views
0

Özyineleme kullanarak bir dizideki ilk tam sayıdan daha az sayıda sayım almam gerekiyor.Özyineleme kullanarak dizi sayımı alın

Bir işlev tanımı verildiğinde bir döngü veya global/statik değişken kullanmamalıyım. Yukarıdaki iki koşulu yerine getirmek için uygulamamı nasıl değiştirebilirim? Son zamanlarda another benzer bir soru sordum ama bu sayım değişkeni takip etme ihtiyacı nedeniyle biraz farklı. Birisi yardım ederse gerçekten takdir edeceğim. Aşağıda benim bir döngü ile benim uygulama. Muhtemelen

public static int countGreaterThanFirst(int[] numbers, int startIndex, int endIndex, int firstNumber) { 
    int greater_than_first = 0; 
    for (int count = startIndex; count <= endIndex; count++) { 
     if (numbers[count] > firstNumber) { 
      greater_than_first++; 
     } 
    } 
    return greater_than_first; 
} 
+0

Çalışıyor, ancak beklenen bir uygulama değil. –

cevap

3

o kadar parametreleri gerekmez:

public static int countGreaterThanFirst(int[] numbers, int currentIndex) { 
    if (currentIndex == numbers.length) return 0; 
    else { 
     if (numbers[currentIndex] > numbers[0]) { 
      return 1 + countGreaterThanFirst(numbers, currentIndex + 1); 
     } else { 
      return countGreaterThanFirst(numbers, currentIndex + 1); 
     } 
    } 
} 

ve (örneğin) ile çağırmak gerekir:

countGreaterThanFirst(someArray, 1); 

bulmak amaçladıysanız "numbers[startIndex] ve numbers[endIndex] arasındaki tüm sayılar firstNumber'dan daha büyük, daha sonra imple Menemen yukarıdaki gibi oldukça benzer olmalıdır:

public static int countGreaterThanFirst(int[] numbers, int startIndex, int endIndex, int firstNumber) { 
    if (startIndex > endIndex) return 0; 
    else { 
     if (numbers[startIndex] > firstNumber) { 
      return 1 + countGreaterThanFirst(numbers, startIndex + 1, endIndex, firstNumber); 
     } else { 
      return countGreaterThanFirst(numbers, startIndex + 1, endIndex, firstNumber); 
     } 
    } 
} 
+0

Parametreler bir koşuldur. –

+0

Evet ve –

+0

@mungaihpk verilen tanıma göre işlevi uygulamam gerekiyor, güncellememi kullanıma al. –