Algorytm szukający pierwszej dodatniej liczby
Ostatnio zmodyfikowano 2018-01-26 00:02
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
|
|
grzeso Temat założony przez niniejszego użytkownika |
» 2018-01-26 00:02:47 to teraz mam takie cudo: 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 |
|
1 « 2 » |