witam,
potrzebuje wygenerowac w nastepujacy sposob wektor danych:
argument funkcji jest jeden i jest to liczba naturalna n.
podaje jak maja byc wyliczane kolejne wyrazy-elementy wektora:
a1 = n
a2 = 3n + 1
a3 = a2/2
a4 = a3/2
a5 = a4/2
a6 = 3a5 + 1
a7 = a6/2
a8 = a7/2
a9 = a8/2
a10 = 3*a9 + 1
a11 = a10/2
...
czyli jak widzimy dokladnie od drugiego wyrazu ciagu co czwarty wyraz stosujemy (3*A_n-1) + 1, a w pozostalych wypadkach (A_n-1) / 2..
moj pomysl byl taki ze w ogole zaczynamy petla for od drugiego wyrazu ciagu i co cztery "kroki" bierzemy nastepny wyraz...no ale nie tak latwo to zrobic....
akurat to rozwiazuje w MATLABIE, wiec ponizej kod, jaki wypocilem:
c(1) = n;
x(2) = 3*n+1;
for i = 2:n
if mod(i,2) == 0 || % tu jeszcze trzeba dopisac jakis warunek na to zeby bral nie tylko parzyste ale i dokladnie "co czwarta" liczbe
c(i) = 3*c(i-1) + 1;
else
c(i) = c(i-1)/2;
end
end
jednak chyba sie tego nie dal zrobic w jednym for'ze....