Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Algorytm szukający pierwszej dodatniej liczby

Ostatnio zmodyfikowano 2018-01-26 00:02
Autor Wiadomość
grzeso
Temat założony przez niniejszego użytkownika
» 2018-01-25 23:53:25
Wybacz, robię 3 rzeczy jednocześnie i za szybko napisałem twój nick. Ale w sumie dobrze że można jeszcze czymś zaskoczyć :)

chyba mam złe pojęcie o działaniu funkcji rekurencyjnej

wiem że brak returna nie ma sensu i właśnie kombinuje jak zrobić return i ogólnie poprawić tą funkcję

bo to że ona jest źle napisana to już wiem

podejście rekurencyjne chyba ma sens, bo chodzi mi o napisanie uniwersalnej funkcji która znajdzie pierwszą dodatnią liczbę i zwróci jej indeks kiedy jest np milion liczb w tablicy. Mogę robić to kolejno, ale załóżmy że pierwsza dodatnia będzie na miejscu np 551458, to tyle operacji muszę wykonać a wolę mniej

P-169000
grzeso
Temat założony przez niniejszego użytkownika
» 2018-01-26 00:02:47
to teraz mam takie cudo:

C/C++
int pierwsza_dodatnia( int * tablica, int i_zero, int i_ostatni )
{
    int i_granica =( i_zero + i_ostatni ) / 2;
    int l_granica = tablica[ i_granica ];
   
    int l_zero = tablica[ i_zero ];
    int l_ostatni = tablica[ i_ostatni ];
   
    cout << endl << "i_granica " << i_granica;
    cout << endl << "i_zero " << i_zero;
    cout << endl << "i_ostatni " << i_ostatni;
    cout << endl << "l_granica " << l_granica;
    cout << endl << "l_zero " << l_zero;
    cout << endl << "l_ostatni " << l_ostatni << endl;
   
    if( tablica[ i_zero ] > 0 )
    {
        cout << "TEST: " << i_zero << endl;
        return i_zero;
    }
    else {
        if( l_granica < 1 )
        {
            return pierwsza_dodatnia( tablica, i_granica + 1, i_ostatni );
        }
       
        if( l_granica > 0 )
        {
            return pierwsza_dodatnia( tablica, i_zero, i_granica - 1 );
        }
    }
}

i to działa, pokazuje dokładnie to co potrzebuje
P-169002
1 « 2 »
Poprzednia strona Strona 2 z 2