Patrice T
Цитата:
Я пытался использовать continue; но результаты были совершенно другими.
Попытка случайных изменений в коде-плохая идея.
Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
static void fun(int x) {
int a, b, c, d;
d = 1;
for (a = 1; a <= x; a++) {
b = a;
c = 1;
while (b > 0) {
c &= b % 2;
b /= 2;
}
d += c;
}
System.out.println(d);
}
Стиль отступа - Википедия[
^]
Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[
^]
личные[
^]
Цитата:
Как я могу написать одну и ту же функцию, используя ровно один цикл
При первом чтении это выглядит так, как будто нужны 2 цикла, так что если вам нужно сохранить его в 1 функции,
вам нужно полностью понять, что делает этот код.
Этот
c &= b % 2;
b /= 2;
говорит о том, что код возится с двоичной формой
b
первое, что нужно сделать, это запустить функцию с помощью x=1, 2, 3, 4 ... 16
обратите внимание совпадениям и бинарными х
x binary result
1 1
2 10
3 11
...
затем вы должны найти причину, по которой результат меняется, это понимание может привести к упрощению и удалению цикла.
В противном случае, решение CPallini-это просто магия, и вы ничего не узнаете.