Mam problem z rozwiazaniem zadania. Program ma wykorzystywac rekurencje. Przy podaniu konkretnych danych wynik powinien wynosic 10, zamaist tego uzyskuje 0 badz 1 przy roznych probach naprawy. Bylabym wdzieczna za wskazanie bledu ;)
Dana jest tablica typu tab=array[1..n] of integer. Proszę napisać funkcję, która znajdzie
najmniejsza sume elementów tablicy, dla którego suma elementów jest
równa sumie indeksów tych elementów. Do funkcji należy przekazać tablicę, funkcja powinna
zwrócić sumę elementów znalezionego podzbioru. Na przykład dla tablicy: [ 0,7, 3, 5, 11, 2 ]
rozwiązaniem jest liczba 10.
# include <iostream>
using namespace std;
const int N=6;
int funkcja(int tab[N], int i, int suma, int indeks, int z) //z jest minimalna suma; suma to suma wartosci; indeks-suma indeksow
{
if(i>=N) return z;
if(i<N)
{
cout<<suma<<" "<<indeks<<"\n";
return funkcja(tab,i+1,suma+tab[i],indeks+i,z) || funkcja(tab,i+1,suma,indeks,z);
if(suma==indeks && z>suma &&suma>0)
{
z=suma;
}
}
else return -1;
}
int main()
{
int tab[N]={0,7,3,5,11,2};
int a;
a=funkcja(tab,0,0,0,0);
cout<<a;
}