2) Рекурсія повинна містити зміну стану та можливість переходу до базового випадку
3) Рекурсія повинна викликати саму себе
Задача 1. Обчислити суму елементів масиву
# include <iostream>
using namespace std;
int main ()
{
setlocale(LC_ALL, "Ukrainian");
int mas[5]={2,3,0,4,8};
int s=0;
for (int i=0; i<5; i++)
s=s+mas[i];
cout <<"Suma="<< s << "\n";
system ("pause");
return 0;
}
Рекурсивний варіант
# include <iostream>
using namespace std;
int suma(int a[], int counter)
{
if (counter == 1)
return a[0];
else
{
return a[0] + suma(a+1,counter-1);
}
}
int main ()
{
setlocale(LC_ALL, "Ukrainian");
int mas[5]={2,3,0,4,8};
cout <<"Suma="<< suma(mas,5) << "\n";
system ("pause");
return 0;
}
Задача 2. Числа Фібоначі
# include <iostream>
using namespace std;
int main ()
{
setlocale(LC_ALL, "Ukrainian");
int fibo[100];
fibo[0]=1;
fibo[1]=1;
int n;
cin >> n;
for (int i=2; i<n; i++)
{
fibo[i]=fibo[i-1]+fibo[i-2];
}
cout <<fibo[n-1]<< "\n";
system ("pause");
return 0;
}
Рекурсивний варіант
int fib (int n)
{
if (n==0||n==1) return n;
else return fib(n-1)+fib(n-2);
}
int main ()
{
int n;
cin>>n;
cout<<"Число Фібоначі = "<<fib(n);
}