Rekurencyjne mnożenie liczb w tablicy. C# Problem gdy w tablicy nie ma ich

Odpowiedz Nowy wątek
2018-01-28 18:13
Smutny Rycerz
0

Cześć wszystkim, jestem początkującym programistą, który ma problem z pewnym z zadań na rekurencję. Funkcja static int Iloczyn(int[] T, int x, int y, int i = 0)
Rekurencyjnie zwraca iloczyn liczb które znajdują się w danym przedziale (x, y) jeśli nie wyświetla 0. (ewentualnie coś innego). Umiem zrobić coś takiego jak poniżej, ale nie mam pomysłu jak zrobić żeby wyświetlało 0, gdy w tablicy nie ma takich liczb.
Bardzo proszę o pomoc w nakierowaniu mnie, z góry dziękuję.

static int Iloczyn(int[] T, int x, int y, int i = 0)
{
   if (T.Length == i)
   {
       return 1;
   }
   if (T[i] > x && T[i] < y)
   {
       return T[i] * Iloczyn(T, x, y, i + 1);
   }
   return Iloczyn(T, x, y, i + 1);
}
edytowany 1x, ostatnio: Ktos, 2018-01-28 18:36

Pozostało 580 znaków

2018-01-28 19:38
1
static int Iloczyn(int[] T, int x, int y, int i = 0, bool found = false)
{
   if (T.Length == i)
   {
       return found ? 1 : 0;
   }
   if (T[i] > x && T[i] < y)
   {
       return T[i] * Iloczyn(T, x, y, i + 1, true);
   }
   return Iloczyn(T, x, y, i + 1, found);
}

#Dżunior React Devloper wanna be#
edytowany 6x, ostatnio: neves, 2018-01-28 21:00
Tylko, że te funkcje nie działają poprawnie - jedynie pierwsza wersja działa. - ple 2018-01-28 20:48
zgadza się, na szybko pisałem bez sprawdzania i za bardzo mnie fantazja poniosła :) - neves 2018-01-28 20:54
Przepraszam, a czy istnieją inne rozwiązania tego problemu bez wykorzystania zmiennej pomocniczej w funkcji w tym przypadku bool found = false? - Mroczny Rycerz 2018-01-28 22:46

Pozostało 580 znaków

2018-01-28 20:55
Smutny Rycerz
0

Dzięki Wielkie, bardzo mi pomogłeś. Teraz już wszystko wiem.

Pozostało 580 znaków

2018-01-28 22:12
Smutny Rycerz
0
neves napisał(a):
static int Iloczyn(int[] T, int x, int y, int i = 0, bool found = false)
{
   if (T.Length == i)
   {
       return found ? 1 : 0;
   }
   if (T[i] > x && T[i] < y)
   {
       return T[i] * Iloczyn(T, x, y, i + 1, true);
   }
   return Iloczyn(T, x, y, i + 1, found);
}

Przepraszam a jak powinny działać dwie pozostałe???

Pozostało 580 znaków

2018-01-29 07:04
0

bez dodatkowego parametru ta wersja powinna działać:

        static int Iloczyn(int[] T, int x, int y, int i = 0)
        {
            if (T.Length == i)
            {
                return int.MinValue;
            }

            int value = Iloczyn(T, x, y, i + 1);

            if (T[i] > x && T[i] < y)
            {
                value = (value == int.MinValue) ? T[i] : T[i] * value;                 
            }

            if (i == 0)
            {
                value = (value == int.MinValue) ? 0 : value;
            }

            return value;
        }

#Dżunior React Devloper wanna be#

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0