今天遇到的一个面试题,贴出来大家看看
求一个数是不是2的幂,如果是,是几次幂?不可以用for,while,goto和C库函数。请用C编写。
本人写了个,用的是递归,贴出来,大家看看,有不对的,还请帮忙指正。
返回-1表示不是2的幂,其他值为2的幂。
int func(int x)
{
if (1 == x) {
return 0;
}
else if (0 == x || 0 != (x % 2)) {
return -1;
}
int ret = func(x / 2);
if (-1 == ret) {
return -1;
}
else {
return ret + 1;
}
}