Я боролся с этим часами.Понижение значения не работает в цикле while
У меня есть рекурсивная функция, как описано ниже:
void fractal (turtle_t *t, int x){
while (x != 0){
printf("%d\n", x);
turtle_walk (t, 20*x);
turtle_turn (t, 25);
x -= 2;
fractal (t, x);
}
}
Когда я запускаю этот код, кажется, что все работает, кроме x -= 2
. Я начинаю со значения 10 для параметра x. Заявления на печать дают мне:
10, 8, 6, 4, 2, 2, 6, 4, 2, 2, etc
Я что-то упустил?
Я также попытался с помощью
fractal (t, x-2);
для рекурсивного вызова, но это не будет работать.
Compile со всеми предупреждениями и отладочной информации ('НКУ -Wall -Wextra -g'). Затем ** используйте отладчик ** ('gdb') для запуска вашей программы шаг за шагом, запрашивайте значения переменных и понимайте, что происходит –
цикл while управляет рекурсией. – Scholarmate
Возможно, вы хотите 'if' вместо' while'? Кстати, каков ожидаемый результат? –