Операции деления и мода должны принимать только и выводить целые числа здесь. "5.5 мод 3", например не имеет никакого смысла. И 11/2 (целочисленное деление) вернет 5, а не 5,5.
Вот программа PHP, которая реализует ваш псевдокод:
<?php
function Magic($number) {
$r = $number % 2;
echo $r . ' ';
if ($number > 1) Magic($number / 2);
}
for ($i = 16; $i < 34; ++$i) {
echo "($i: ";
Magic($i);
echo ") ";
}
echo "\n";
Результаты на выходе:
(16: 0 0 0 0 1 ) (17: 1 0 0 0 1 0 ) (18: 0 1 0 0 1 0 ) (19: 1 1 0 0 1 0 ) (20: 0 0 1 0 1 0 ) (21: 1 0 1 0 1 0 ) (22: 0 1 1 0 1 0 ) (23: 1 1 1 0 1 0 ) (24: 0 0 0 1 1 0 ) (25: 1 0 0 1 1 0 ) (26: 0 1 0 1 1 0 ) (27: 1 1 0 1 1 0 ) (28: 0 0 1 1 1 0 ) (29: 1 0 1 1 1 0 ) (30: 0 1 1 1 1 0 ) (31: 1 1 1 1 1 0 ) (32: 0 0 0 0 0 1 ) (33: 1 0 0 0 0 1 0 )
Что показывает, что 6-значный результат (x: 0 1 1 0 0 1 )
невозможен для любого целого числа x
(из-за монотонного роста выходной строки). Тем не менее, Magic (38) равен 0 1 1 0 0 1 0
- первый 7-значный результат с требуемой строкой, но также с завершающим нулем.
Что касается отрицательных целочисленных значений, возможны только 2 выхода: «0» и «-1».