Я изучаю язык программирования C, и у меня возникают проблемы с записью полного пути к нужному элементу в дереве Stern-Brocot. Он записывает только первый номер пути. Я установил его, чтобы выписать 0 при левом, а 1 - вправо. И какой бы номер я ни выбрал, он может быть на третьем или на 15-м уровне, он все еще записывает только первое число.C Программирование - Stern-Brocot Tree path finder
Вот петля в то время как:
while ((p1+p2!=p) && (q1+q2)!=q) {
if ((p1+p2)/(q1+q2)<p/q) {
printf("1 ");
p1+=p2;
q1+=q2;
} else if (((p1+p2)/(q1+q2)>p/q)) {
printf("0 ");
p2+=p1;
q2+=q1;
}
}
Я забыл добавить: начальные p1 и p2 являются числовыми, а q1 и q2 - знаменателями. p1/q1, p2/q2. Начальные значения: p1 = q2 = 0 и p2 = q1 = 1. p/q - заданная дробь, которую мы ищем – Maniak
. Вы выполняете целые сравнения. Я не уверен, что это то, что вы хотите. – fuz
Кроме того, не могли бы вы показать нам остальную часть кода? – fuz