Rekurencja

VI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 43
0
Kopiuj
public static int oddSum1(int n) {
    int sum = 0;

    if(n % 2 == 1) {

        sum += n;
    }
    if (n >= 0) {
        oddSum1(n -1);
    }

    return n;
}

Mam zadanie które polega na napisaniu rekurencji funkcji która spośród wartości podanej do konsoli, wyodrębnia nieparzyste cyfry i
sumuje je ze sobą, problem polega na tym ze zmienna sum ktora zadeklarowałem w metodzie z każdym nowym wywołaniem resetuje swoja wartość do 0, co jest zrozumiałe dla mnie bo to zmienna lokalna. Nie mogę utworzyć zmiennej instancji która mogłaby przechowywać te wartości bo zadanie na to nie pozwala, moze jakies wskazówki :)

DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1135
0

Nie widzę tutaj sum

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
8

oddSum1() mogłoby zwracać sumę nieparzystych cyfr, w stylu:

Kopiuj
oddSum(liczba: Int) -> Int:
  if liczba == 0:
    return 0
    
  let cyfra = liczba % 10
  let pozostała-liczba = liczba / 10
  
  if cyfra.jest_parzysta():
    return oddSum(pozostała-liczba)
  else
    return cyfra + oddSum(pozostała-liczba)
IC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
1

żeby zrozumieć rekurencję musisz zrozumieć rekurencję

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.