Mam napisać algorytm który wyznacza n-ty wyraz ciągu:
*Pierwszy i drugi wyraz ciągu są równe 1.
*Jeśli n>2 i n jest parzyste, to n-ty wyraz jest sumą trzech wyrazów go poprzedzających.
*Jeśli n>2 i n jest nieparzyste, to n-ty wyraz jest równy wyrazowi o numerze (n-1).
Wiem jak to zrobić rekurencją, ale muszę użyć iteracji.
unsigned int Algorytm(unsigned int n)
{
unsigned int Al=1,Al_1=1,Al_2=1,i=2,pom=0,pom_1=0;
if (n>2&&n%2==0)
{
while (i<n)
{
pom=Al;
pom_1=Al_1;
Al=Al+Al_1+Al_2;
Al_1=pom;
Al_2=pom_1;
i++;
}
}
if (n>2&&n%2!=0)
{
while (i<n-1)
{
pom=Al;
Al=Al+Al_1;
Al_1=pom;
i++;
}
}
return Al;
}
Coś takiego zrobiłem, ale jeśli n%2==0
to liczy mi tak, jakby wszystkie n były parzyste (?ciąg Tribonacciego?) i analogicznie n%2!=0
- wszystkie n nieparzyste.