• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rekurencja oraz instrukcja warunkowa

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
304 wizyt
pytanie zadane 14 stycznia 2023 w C# przez Freak44 Początkujący (300 p.)

Stwórz funkcję static long Suma2(int[] T1, int n) zwracającą sumę tych liczb, które jednocześnie spełniają warunki: są parzyste, znajdują się na pozycji o parzystej wartości indeksu oraz na indeksach większych od podanego indeksu n. 

np. dla tablicy: { 1, 22, 3, 15, 60, 35, 4, 6, 10 } i wywołania: Suma2(tab,4)) zwrócona zostanie wartość 14 (suma elementów 4 i 10).

Mam problem z ostatnim argumentem, czyli liczba znajduje się na indeksach większych od podanego indeksu n. Macie pomysł jak to naprawić?

static long Suma2(int[]T1, int n)
        {
            if (T1 == null || T1.Length == 0) return 0;

            // warunek końca rekurencji; odbicie rekurencji
            if (T1.Length == n) return 0;

            long rek = Suma2(T1, n+1);
            long tu;
            int i = T1.Length;
            if (T1[n] % 2 == 0 && n % 2 == 0 && i > n)
            {
                tu = T1[n];
                
            }
            else
            {
                tu = 0;
                
            }
            return tu + rek;
        }
        static void Main(string[] args)
        {
            int[] T = { 1, 22, 3, 15, 60, 35, 4, 6, 10 };
            Console.WriteLine(Suma2(T,4));
        }

 

1 odpowiedź

+2 głosów
odpowiedź 14 stycznia 2023 przez VBService Ekspert (256,320 p.)
wybrane 15 stycznia 2023 przez Freak44
 
Najlepsza

Możesz np. przez inkrementację n na "wejściu" a nie tylko przez
dodanie 1 do n

[ on-line , on-line ]

long rek = Suma2(T1, n+1);

na

long rek = Suma2(T1, ++n);


static long Suma2(int[]T1, int n) {
    if (T1 == null || T1.Length == 0 || T1.Length <= n) return 0;

    long rek = Suma2(T1, ++n), tu;
    if (n % 2 == 0 && T1[n] % 2 == 0)
        tu = T1[n];
    else
        tu = 0;
    return tu + rek;
}

 

Podobne pytania

0 głosów
1 odpowiedź 262 wizyt
pytanie zadane 10 stycznia 2023 w C# przez Freak44 Początkujący (300 p.)
0 głosów
1 odpowiedź 670 wizyt
pytanie zadane 4 stycznia 2020 w C# przez p13 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,394 wizyt
pytanie zadane 11 listopada 2017 w C# przez ewa97 Nowicjusz (170 p.)

93,187 zapytań

142,201 odpowiedzi

322,012 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - Michal Drewniak
  6. 2006p. - rucin93
  7. 2005p. - Łukasz Siedlecki
  8. 1964p. - CC PL
  9. 1946p. - Adrian Wieprzkowicz
  10. 1901p. - Mikbac
  11. 1744p. - rafalszastok
  12. 1734p. - Anonim 3619784
  13. 1586p. - Dawid128
  14. 1520p. - Marcin Putra
  15. 1480p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...