Napisz funkcję, która dla zadanej liczby całkowitej nieujemnej \(\displaystyle{ n}\) wyznacza iloczyn \(\displaystyle{ n}\) pierwszych wyrazów ciągu danego wzorem:
\(\displaystyle{ a_{i} = \begin{cases} 1&\mbox{ dla }i=0 \\ 2 \cdot a_{i-1} +1& \mbox{ dla }i>0 \end{cases}}\)
[C] Iloczyn pierwszych wyrazów ciągu
[C] Iloczyn pierwszych wyrazów ciągu
Ostatnio zmieniony 20 cze 2015, o 21:35 przez Jan Kraszewski, łącznie zmieniany 3 razy.
Powód: Poprawa wiadomości. Symbol mnożenia to \cdot.
Powód: Poprawa wiadomości. Symbol mnożenia to \cdot.
-
- Użytkownik
- Posty: 65
- Rejestracja: 4 paź 2014, o 12:09
- Płeć: Mężczyzna
- Lokalizacja: Kraków
- Podziękował: 18 razy
- Pomógł: 3 razy
[C] Iloczyn pierwszych wyrazów ciągu
Można zastosować podejście rekurencyjne do wyznaczania n-tej wartości ciągu. Taka funkcja miałaby wtedy postać:
No i teraz w pętli od zerowej do n-tej wartości ciągu wykorzystywać tą funkcję do wyznaczania wartości, przez którą będziemy mnożyć.
Kod: Zaznacz cały
int RekMul(int n){
if(n == 0) return 1;
return 2*RekMul(n - 1) + 1;
}
[C] Iloczyn pierwszych wyrazów ciągu
Jak ma wyglądać taka pętla? Rozumiem, że ma być ona częścią programu, funkcji main?
-
- Użytkownik
- Posty: 132
- Rejestracja: 1 cze 2012, o 07:04
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Pomógł: 15 razy
[C] Iloczyn pierwszych wyrazów ciągu
\(\displaystyle{ \prod_{i=0}^{7}a(i) > 2^{32}}\)
\(\displaystyle{ \prod_{i=0}^{10}a(i) > 2^{64}}\)-- 24 cze 2015, o 14:14 --
\(\displaystyle{ \prod_{i=0}^{10}a(i) > 2^{64}}\)-- 24 cze 2015, o 14:14 --
Kod: Zaznacz cały
unsigned int iloczyny[10];
int main(void) {
unsigned int a=0, p=1, i;
for(i=0; i<10; i++)
iloczyny[i] = (p *= (a = 2*a + 1));
...