Rekurencyjna wersja funkcji zwracającej najmniejszy element

0

Witam, mam problem z implementacją, rekurencyjnej wersji funkcji zwracającej najmniejszy element (funkcja ta, jest wykorzystywana w programie sortującym). Problem, istnieje, gdyż w wywołaniu rekurencyjnym funkcji zawsze na początku zmiennej

indeks_min

przypisywana jest wartość zmiennej indeks_pocz

Przez co zmienna indeks_min, któa jest liczona poprawnie, dostaje cały czas ta samą wartość. Nie mam pomysłu jak obejść to przypisanie (ewentualnie co zwrócić zamiast zmiennej <code class="cpp">indeks_min

Oto kod:

#include<iostream>

using namespace std;

int indeks_najmniejszego(const int a[], int indeks_pocz, int liczba_elementow) 
{   
        int min = a[indeks_pocz], indeks_min = indeks_pocz;
        int indeks = indeks_pocz + 1;
    if (indeks_pocz == liczba_elementow)
    return indeks_pocz;
    if (indeks < liczba_elementow)
    {     
        if (a[indeks] < min)
        {
             min = a[indeks];
             indeks_min = indeks;
             indeks_pocz = indeks;
             cout << indeks_min << endl;
             //min jest najmniejszym elementem spośród wartości 
             //od a[indeks_pocz] do a[indeks]
         }
    return indeks_najmniejszego(a, indeks_pocz, liczba_elementow - 1);
    }
}

int main( )
{
    int a[4] = { 4 , 1 , 3 , 2};
    cout << indeks_najmniejszego(a, 0, 4) << endl;
    getchar( );
    return 0;
} 
0

Musisz sobie zapamietać indeks minimalenego elementu i potem go dalej przesyłać do kolejnych wywołań.

int indeks_najmniejszego(int a[],int index_poczatek,int index_min,int rozmiar)
{
    index_poczatek++;
    if(index_poczatek==rozmiar)
        return index_min;
    if(a[index_poczatek]<a[index_min])
        index_min=index_poczatek;
    return indeks_najmniejszego(a,index_poczatek,index_min,rozmiar);
}
 

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