Алгоритм
Для решения задачи используется поиск в ширину (Breadth-First Search, BFS) – алгоритм обхода графа,
генерирующий последовательность Калкина–Уилфа до n-го члена.
Для хранения узлов последовательности используется структура данных, называемая очередью.
Алгоритм генерирует каждый член последовательности, вычисляя левые и правые дочерние узлы текущего узла и добавляя их в очередь.
В конце возвращается n-й член последовательности.
Вот подробное описание шагов алгоритма.
1. Принимается целое положительное число n.
2. Значение n уменьшается на 1.
3. Создается пустая очередь queue.
4. В очередь добавляется корневой узел (1, 1).
5. Затем запускается цикл, выполняющий следующие шаги n раз:
а) из очереди извлекается следующий узел, и его числитель и знаменатель присваиваются переменным
parent_num и parent_denom соответственно;
б) вычисляется левый дочерний элемент текущего узла установкой его числителя равным parent_num,
а знаменателя – равным parent_num + parent_denom;
в) вычисляется правый дочерний элемент текущего узла установкой его числителя равным parent_num + parent_denom,
а знаменателя – равным parent_num;
г) левый и правый дочерние узлы добавляются в очередь queue.
6. Из очереди извлекается последний элемент, и его числитель и знаменатель присваиваются переменным final_num и final_denom соответственно.
7. Если знаменатель последнего узла равен 1, то возвращается его числитель как целое число.