考虑以下 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)是正确的。
笔记:
它将打印 n 的二进制表示并终止,仅当条件“if (n <= 0)”时。
#include
void convert(int n) {
if(n <= 0)
printf("%d", n);
else {
convert(n / 2);
printf("%d", n%2);
};
}
int main() {
convert (16);
}
这个问题的测验