- Gdy
c=a
, to mamy ciąg postaci 4
(pierwsza liczba nie dzieli się ani przez 3, ni przez 7) lub ciąg postaci 21
(pierwsza liczba dzieli się przez 3 lub przez 7). W drugim przypadku iloczyn wynosi oczywiście 21, w pierwszym nie ma żadnej liczby do mnożenia. Pisałem wcześniej, że przyjmuję iż iloczyn pustego zbioru liczb jest równy 1.
- Wiesz co to jest ciąg arytmetyczny? Przy oznaczeniach z zadania, jego wyrazy to
a,a+b,a+2*b,....
. Jest oczywiste, że jeśli liczba c jest wyrazem ciągu, to różnica c - a
dzieli się przez b
, a jak nie jest wyrazem ciągu to c-a
nie dzieli się przez b
.
- Poprzednio to sprawdzenie było przy założeniu, że
c=a
, teraz c!=a
.
- Bo zwiększenie zakresu o jeden, które dopisuje liczbę spoza ciągu, nie zmienia iloczynu
Iloczyn(a,b,c) = iloczyn(a,b,c-1)
.
- Nie rozumiem tej wątpliwości, kod (w funkcji silnia)
return n*silnia(n-1);
rozumiesz, a kodu (w funkcji iloczyn)return c*iloczyn(a,b,c-1);
nie rozumiesz?
1. Prawie rozumiem gdy podam liczby (3,1,3), zwróci a czyli 3, gdy podam liczby (5,1,5) zwróci 1, a nie powinno 0? Przecież żadna liczba z danego ciągu nie spełnia warunku, 1 nie dzieli się ani przez 3 ani przez 7, więc nie powinno być 0? tak samo w pierwszym if'ie,
```csharp
if (c < a)
{
return 1;
}
<- tu nie powinno zwracać "0"?
2. Wiem co to jest ciąg arytmetyczny ale zawsze takie rzeczy zapisywałem jako wzory a nie jako rekurencja i mam problem aby się przestawić. Z tym warunkiem
((c - a) % b != 0)
już rozumiem.
3. Rozumiem.
4. Nie rozumiem nadal. Gdy napisałem wszędzie
Iloczyn1(a,b,c)
<- wyskakiwał błąd. Nadal nie mam pojęcia po co zmniejszamy o jeden. Co nam to daje? Rozumiem to, że kiedy daliśmy argumenty funkcji to ona tyle samo musi zwrócić tylko dlaczego w innej postaci? Wcześniej są zadeklarowane if'y i inne sposoby co program ma wypisać. Kod w funkcji silnia rozumiem, bo ma mnożyć wyraz o 1 mniejszy, gdybyśmy chcieli aby był to iloczyn co drugiej liczby to napisalibyśmy n-2. W takim razie mam to rozumieć, że zapis c-1 ma odejmować liczby po kolei i sprawdzać czy dla każdej liczby są spełnione warunki?