以下功能有什么函数?
int fun(unsigned int n)
{
if (n == 0 || n == 1)
return n;
if (n%3 != 0)
return 0;
return fun(n/3);
}
(A)当n为3的倍数时返回1,否则返回0
(B)当n为3的幂时返回1,否则返回0
(C)当n为3的倍数时返回0,否则返回1
(D)当n为3的幂时返回0,否则返回1答案: (B)
说明:让我们以n = 27的3次方为例进行求解。
第一次,如果条件为假,因为n不等于0也不等于1,则27%3 = 0。
在这里,如果条件为假,因为它等于0,所以再次出现。
然后将调用fun(27/3)。
第二次,如果条件为假,因为n不等于0也不等于1,则9%3 = 0。
如果条件为假(因为它等于0),则在此处再次出现。
然后调用fun(9/3),如果条件为假,则第三次调用,因为n既不等于0也不等于1,则3%3 = 0。
如果条件为假(因为它等于0),则在此处再次出现。
然后,如果条件为真,则fun(3/3)将在此处调用n == 1并返回n即1。
选项(B)是正确的。
这个问题的测验