这是一个简单的程序来检查 num 是否是 2 的幂,为此我使用了递归。不知怎的,它不起作用。我添加了一个断点,发现程序正在运行,它会返回 true 并返回 false,但即使在这之后它也返回未定义。
function check2Pow(num)
{
function check(i)
{
let pow=Math.pow(2,i);
if(pow === num)
{
return true;
}
else if(pow > num)
{
return false;
}
else
{
check(i+1);
}
}
return check(0);
}
您忘记在
return
之前写check(i+1)
。如果省略 return
,则任何递归的结果都将被忽略。
你也可以用这句话来知道你是否有 2 的幂:
Math.log(num)/Math.log(2) % 1 === 0