查找函数的结果

| 有一个未知函数的代码:
function Magic(number)
    r = number mod 2
    print r
    if number > 1
        Magic(number / 2)
(用伪代码编写) 问题是:应该传递什么整数才能接收以下答案
0 1 1 0 0 1
主要问题是我无法弄清楚mod在伪代码中的工作方式。 5,5 mod 3 = 2.5还是2     
已邀请:
首先,这里是针对此问题的可执行python代码。
def Magic(number):
r = number % 2
print r
if number > 1:
    Magic(number / 2)

Magic(15)       
但是,此问题的模式是该函数针对给定的输入数字返回REVERSE二进制数字。因此,在这种情况下,最简单的解决方案是将0 1 1 0 0 1取反为100110,然后计算该二进制数的值,即32 + 4 + 2 =38。使用这种方法,您可以计算任何给定输入的所需数量或预期输出。     
在此,除法运算和mod运算都只应接受并输出整数。 \“ 5.5 mod 3 \” f.e.真的没有任何意义。并且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 )
这表明对于任何整数
x
都是6位结果result5ѭ是不可能的(由于输出字符串的单调增长)。但是,Magic(38)是
0 1 1 0 0 1 0
-带有所需字符串的前7位结果,但末尾还有零。 对于负整数值,仅2个可能的输出是\“ 0 \”和\“-1 \”。     
mod
给您整数除法的余数。一些例子: 1 mod 2 = 1(因为整数除以1/2 = 0) 2 mod 2 = 0(2/2 = 1,无余数) 6 mod 3 = 0(6/3 = 2,无余数) 8 mod 3 = 2 小数部分可能应该忽略。在大多数语言中,它取决于数字的数据类型(如果两个操作数都是整数,则某些语言会进行整数除法,这可能也是您应该执行的操作,因此5/2 = 2)。 关于第一个问题(扰流板警报!,请在阅读本指南之前先尝试一下!),从头开始,并在每个步骤中乘以2。如果该步骤中的数字应为
1
,则还要加1。 因此,最后一步是1.从
1
开始: 1个 1 * 2 = 2 2 * 2 = 4 4 * 2 + 1 = 9 等等。我可以给您正确的答案,但我认为最好自己尝试一下;-)     

要回复问题请先登录注册