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

Recursion 给定对象的递归定义,如何编写递归识别器?,recursion,recursive-descent,Recursion,Recursive Descent,我正在准备考试,我很难理解这个概念,给定对象的递归定义,能够编写递归识别器。我真的不知道该怎么做 下面是一个示例问题: 如果正整数是2的幂的1倍或2倍,则它是2的幂。直接基于此递归定义编写一个正整数递归识别器,用于识别正整数是否为2的幂。据我所知,您需要的是: bool isPowerOf2(int x){ if (x==1) return true; if (x mod 2 > 0) return false; return isPowerOf2(x/2);

我正在准备考试,我很难理解这个概念,给定对象的递归定义,能够编写递归识别器。我真的不知道该怎么做

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

据我所知,您需要的是:

bool isPowerOf2(int x){
     if (x==1) return true;
     if (x mod 2 > 0) return false;
     return isPowerOf2(x/2);
}

此函数将尝试通过每次将数字除以2来达到1,但如果x模2大于0,则如果x不能精确除以2,则返回false。

在本课程之前,您是否使用过任何特定的语法或语言来描述识别器?澄清问题:输入的格式是什么?你是在学习10个整数,还是在执行结构归纳?C++。对不起,我忘了提那件事。是的,这正是我想要的。但是如果我尝试用C++编译这个函数,这个函数会成功吗?