Witam,
rozwiązałem zadanie z "ciekawa wylicznka" ze SPOI ale byłem ciekawy jak można inaczej rozwiązać i znalazłem pewne rozwiązanie ale nie rozumiem do końca jego działania
#include <iostream>
using namespace std;
void f(int k) {
if(k>2) f(k/2+k%2-1);
cout << 6-k%2;
}
int main() {
int k; cin >> k; f(k);
}
Kod pochodzi ze strony "matematyka.pl" dodany przez użytkownika flashion .
Wiem że jest to funkcja rekurencyjna, ale niestety z braku wystarczającej wiedzy nie mogę do końca zrozumieć jego działania
powiedzmy że do funkcji przekazuję liczbę 10, 10 jest większe od 2 więc zostaje wywołana funkcja dla argumentu 4 ponownie zostaje wywołana ta funkcja bo argument jest większy od 2 po tym obiegu warunek nie jest spełniony i dopiero wartośc jest wypisywana. Moje rozumowanie jest błędne na pewno, ale zupełnie nie wiem gdzie