napisałem prosty program z rekurencją który ma wyszukać element z tablicy, lecz mam problem ze zwracaną wartością i nie wiem w czym tkwi błąd ;/ także proszę o pomoc. Poniżej umieszczam napisany program wraz z komentarzami o co mi chodzi
#include <iostream>
using namespace std;
int znajdz(int szuk, int *tab, int rozm)
{
if(rozm == -1) return rozm; //zwraca "błędną" wartość - nie taką jak pokazuje wewnątrz funkcji
if(szuk == tab[rozm]) return rozm; // to co wyżej
else
{
rozm--;
znajdz(szuk,tab,rozm);
}
}
int main()
{
int tab[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int rozm = 14;
cout << "Jakiej liczby szukasz? = ";
int szuk;
cin >> szuk;
int s;
s = znajdz(szuk, tab, rozm);
if(s == -1) cout << "Nie istnieje taki element w tablicy\n";
else cout << "Element znajduje sie w tab[" << s << "]" << endl;
cout << "Koniec programu\n";
system("pause");
}
wiem ze można napisać ten program w inny sposób, ale nie o to mi tutaj chodzi. Chce się dowiedzieć dlaczego funkcja znajdź zwraca mi "błędną" wartość. W moim logicznym myśleniu powinno to działać ok, ale niestety gdzieś się wysypuje. Może tu chodzi o to że funkcja jest rekurencyjna i następują powroty ale nie wiem skąd by się brała inna wartość. Proszę o wytłumaczenie