我正在攻读考试,我无法理解这个概念,给定一个对象的递归定义,能够编写一个递归识别器。我不确定该怎么做。
以下是一个示例问题: 如果正整数是2的幂的1或2倍,则正整数是2的幂。直接基于此递归定义为正整数写一个递归识别器,该递归定义识别正整数是否为2的幂。
答案 0 :(得分:0)
根据我的理解,你正在寻找类似的东西:
bool isPowerOf2(int x){
if (x==1) return true;
if (x mod 2 > 0) return false;
return isPowerOf2(x/2);
}
此函数将“尝试”通过每次除以2来达到1,但如果x不能精确地除以2(如果x模2大于0),则将返回false。