1

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

这是一个示例问题:一个正整数是 2 的幂,如果它是 2 的幂的 1 或两倍。直接根据这个递归定义编写一个正整数的递归识别器,它识别正整数是否是 2 的幂2.

4

1 回答 1

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。

于 2013-10-03T15:55:34.333 回答