考虑下面的C程序:
void convert(int n) {
if (n < 0)
printf(“ % d”, n);
else {
convert(n / 2);
printf(“ % d”, n % 2);
}
}
当使用任何正整数n作为参数调用函数convert时,将发生以下哪种情况?
(A)将以相反的顺序打印n的二进制表示形式并终止。
(B)它将打印n的二进制表示形式,但不会终止
(C)它不会打印任何内容,也不会终止。
(D)将打印n的二进制表示形式并终止。答案: (C)
说明:由于n是整数,因此因整数而返回1/2 = 0.5 = 0。
0/2 = 0将导致无限循环,因为0没有终止条件。
因此,选项(C)是正确的。
笔记:
仅当条件为“ if(n <= 0)”时,才会打印n的二进制表示形式并终止。
#include
void convert(int n) {
if(n <= 0)
printf("%d", n);
else {
convert(n / 2);
printf("%d", n%2);
};
}
int main() {
convert (16);
}
这个问题的测验