📜  门| Gate IT 2005 |第57章

📅  最后修改于: 2021-06-29 02:09:44             🧑  作者: Mango

以下程序输出的输出是什么?

#include
int f(int n, int k)
{
    if (n == 0)
        return 0;
    else if (n % 2)
        return f(n/2, 2*k) + k;
    else return f(n/2, 2*k) - k;
}
int main ()
{
    printf("%d", f(20, 1));
    return 0;
}

(A) 5
(B) 8
(C) 9
(四) 20答案: (C)
解释:

f(20,1) = 9.
f(10,2) - 1 = 9
f(5,4) - 2 = 10
f(2,8) + 4 = 12
f(1,16) - 8 = 8
f(0,32) + 16 = 16 

这个问题的测验