Rekurncja/iteracja język C/C++

0

Witam! Mam pewien problem z zamianą rekurencji na iteracje, siedzę już 2h i nic nie mogę wymyślić.
Napisz równoważny program iteracyjny:
1.

int fun(int *t, int n)
{
if(!n) return 1;
else {
int l = rand()%5;
cout << l << " " << t[n] << endl;
return t[n]-l+fun(t,n-1);
}
}
int fun(int *t, int n)
{ int A=0;
if(!n) return 1;
else {
A = t[n];
cout << t[n] << endl;
t[n] = fun(t,n-1);
cout << A << endl; 
}
}
1

Pętelką pętelką...

0
if(!n) return 1;

Ta linijka może być trochę myląca. Zamień ją sobie na if (n == 0) return 1;

 Zarówno rekurencja jak i iteracja muszą mieć pewien warunek końca, choć w obu wygląda to inaczej (w rekurencji bywa znacznie mniej oczywisty). Co tutaj odgrywa rolę takiego warunku?
0

Postac iteracyjna do 1 wygladac tak:

 

int fun(int *t, int n)
{
int value=0,l;

for(int i=0; i<=n; ++i) {
   if(i==0) { ++value; continue; } 
   else  {
   l=rand() % 5;
   cout<< l <<"  " <<t[i]<<endl;
   value+=t[i]-l;
   } 
  
}
 return value;
}


Ale ogolnie to nie rozumiem do czego sluzyc ma ten algorytm ale nawet nie chce mi sie wglebiac.

1 użytkowników online, w tym zalogowanych: 0, gości: 1