给定对象的递归定义,如何编写递归识别器?

时间:2013-10-03 15:24:02

标签: recursion recursive-descent

我正在攻读考试,我无法理解这个概念,给定一个对象的递归定义,能够编写一个递归识别器。我不确定该怎么做。

以下是一个示例问题: 如果正整数是2的幂的1或2倍,则正整数是2的幂。直接基于此递归定义为正整数写一个递归识别器,该递归定义识别正整数是否为2的幂。

1 个答案:

答案 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。