num=-(nv+r);
Очевидно, отрицательно, так как и nv
и r
являются положительными.
Я подозреваю, что вы действительно хотели
num = nv
или:
num -= (nv + r)
Также обратите внимание, что ваше условие останова - num >= 0
- если вы сделаете первое изменение, вы получите бесконечный цикл, так как, когда вы достигнете num ==0
, вы разделите на 2, и получите nv == num /2 == 0 / 2 == 0
и назначите nv
обратно к num
(*) Обратите внимание, что и второе изменение будет создавать бесконечный цикл: 0 % 2 == 0
и 0 / 2 == 0
, поэтому num -= (nv + r) == 0 - (0 + 0) == 0