Wieże Hanoi - Rekurencja
Ostatnio zmodyfikowano 2013-11-23 12:30
pekfos |
» 2013-11-21 20:38:38 main() wywołuje f(5), które 2 razy wyświetla 5. Przed wyświetleniem drugiego 5, f(5) wywołuje f(4), które wyświetla 2 razy 4, itd, aż do wywołania przez f(0), które nic nie robi. |
|
barti2287 Temat założony przez niniejszego użytkownika |
» 2013-11-22 10:22:57 Próbowałem sobie uporządkować ten mój kod... Wyszło mi (mam przynajmniej taką nadzieję) w połowie. Utknąłem i nie wiem jak dalej go przeanalizować. Dokonałem w moim kodzie takiej zmiany, że zamiast wyświetlać A i C, wyświetla po prostu lk (jak najpierw przeanalizuję ten wariant, to będę wiedział chociaż jakie kroki mój program wykonuje i łatwiej mi będzie zinterpretować te zamiany miejscami argumentów). Oto lista, która pokazuje część działania programu. Proszę o podpowiedź czy jest poprawna i co znajdzie się dalej. 1. Wywołanie funkcji "hanoi" dla lk=3. 2. Wykonanie 1, lk=2. 3. Wykonanie 2, lk=1. 4. Wyświetlenie lk dla 2 wykonania ( lk=1 ). 5. Wyświetlenie lk dla 1 wykonania ( lk=2 ). 6. Wykonanie 2 (chodzi o ilość "zapętleń"), lk=1. 7. Wyświetlenie lk dla 2 wykonania (1). Program po uruchomieniu zwraca liczby: 1, 2, 1, 3, 1, 2, 1. A to jest kod: #include <iostream> #include <conio.h>
using namespace std;
void hanoi( int lk, char A, char B, char C ) { if( lk > 0 ) { hanoi( lk - 1, A, C, B ); cout << lk << endl; hanoi( lk - 1, B, A, C ); } }
int main() { int lk; cin >> lk; cout << endl; hanoi( lk, 'A', 'B', 'C' ); getch(); return 0; }
|
|
barti2287 Temat założony przez niniejszego użytkownika |
» 2013-11-23 12:30:23 Udało mi się to wszystko zrozumieć! W końcu... Dziękuję wszystkim za pomoc. |
|
1 « 2 » |