📜  门| Gate IT 2008 |第80章

📅  最后修改于: 2021-06-28 18:00:33             🧑  作者: Mango

考虑下面用C编写的代码片段:

void f (int n)
{
    if (n <= 1)  {
        printf ("%d", n);
    }
    else {
        f (n/2);
        printf ("%d", n%2);
    }
}

以下哪个实现将为f(173)产生与上述代码相同的输出?
P1

void f (int n)
{
    if (n/2)  {
        f(n/2);
    }
    printf ("%d", n%2);
}

P2

void f (int n)
{
    if (n <=1)  {
        printf ("%d", n);
    }
    else {
        printf ("%d", n%2);
        f (n/2);
    }
}

(A) P1和P2
(B)仅P2
(C)仅P1
(D) P1和P2都不答案: (C)
解释:

基本上,函数f打印数字的二进制表示形式。
函数f1还打印数字的二进制表示形式
函数f2打印二进制表示形式,但顺序相反。
f的输出是:-10101101
f1的输出是:-10101101
f2的输出是:-10110101

因此,答案是选项(C),它仅是P1。

该解决方案由Anil Saikrishna Devarasetty提供

这个问题的测验