Buna!
Invat metoda Divide et Impera, intuitiv reusesc sa fac problemele, dar nu inteleg inca constient fiecare pas ce se intampla in memoria calculatorului. Spre exemplu in algoritmul de mai jos, unde trebuie sa gasesc cel mai mare element dintr-un vector (algoritm functional), nu inteleg ce se intampla, cum si unde se retine cel mai mare element, cand compar a cu b la fiecare reapel. De asemenea, nu inteleg ce e cu conditia aceia if (s==d) return v[s]; , ca la recursivitate, dar nu inteleg ce rol are aici. Imi poate explica cineva detaliat? As fi foarte recunoscator.


#include

using namespace std;
int maxim (int v[100], int s, int d)
{
if (s==d)
return v[s];
else
{
int m=(s+d)/2;
int a=maxim(v,m+1,d);
int b=maxim(v,s,m);
if (a>b)
return a;
else
return b;
}
}
int main()
{
int n,v[100];
cin>>n;
for (int i=0;i cin>>v[i];
cout< return 0;
}


Răspuns :

s == d este conditia de iesit din recursivitate, adica cazul de baza.

Daca ai alte nelamuriri, intreaba mai detaliat.