Zad. 5. Poniżej zdefiniowany jest pewien ciąg, którego kolejne wyrazy generowane są w sposób rekurencyjny:
$$a_n=\left\{\begin{matrix}-1,&dla\ n=1\\-a_{n-1}\cdot n-3&dla\ n>1\end{matrix}\right.$$
Napisz program, który znajdzie wartość n-tego wyrazu ciągu.
Rozwiązanie
Wyznaczymy kilka kolejnych wyrazów tego ciągu:
$$a_1=-1$$
$$a_2=-a_1\cdot 2-3=-(-1)\cdot 2 - 3=-1$$
$$a_3=-a_2\cdot 3-3=-(-1)\cdot 3-3=0$$
$$a_4=-a_3\cdot 4-3=0-3=-3$$
$$a_5=-a_4\cdot 5-3=-(-3)\cdot 5-3=12$$
$$\cdots$$
Aby wyznaczyć następny wyraz, trzeba znać wartości wszystkich poprzednich. Indeksy wyrazów ciągu są liczbami naturalnymi dodatnimi.
#include<iostream>
using namespace std;
int ciag(int n)
{
if(n<2)
return -1;
return -ciag(n-1)*n-3;
}
int main()
{
int n;
cout<<"Podaj nr wyrazu ciągu, którego wartość chcesz policzyć: ";
cin>>n;
cout<<n<<" wyraz ciągu ma wartość "<<ciag(n)<<endl;
return 0;
}