У меня есть домашний вопрос, который гласит:
Напишите рекурсивную функцию sum_odd (n), используя принципы псевдокода, описанные в лекции, чтобы суммировать числа i между 1 и n, где двоичное представление i содержит нечетное количество единиц, например, 14 представлено как 0b1110, которое содержит нечетное количество единиц. Вы можете предположить, что у вас есть доступ к функции binary_ones (d), которая возвращает количество единиц в двоичном представлении d. Вы не должны записывать эту функцию, но можете вызывать ее в своем псевдокоде. Вы также можете предположить, что n будет больше 0 - проверка ошибок не требуется.
Пока что я придумал следующее:
function sum_odd(n):
read n
sum = 0
if n is less than or equals to 0 then
return sum
else if binary_ones(n) % 2 equals 1 then
return sum = sum + sum_odd(n-1)
else
return sum_odd(n-1)
end if
Меня беспокоит сумма = сумма + сумма_odd (n-1) часть. Я не думаю, что он добавит первое введенное значение, что заставляет меня сомневаться, что я вообще все сделал правильно.
Может понадобиться помощь.