📅  最后修改于: 2023-12-03 15:26:03.331000             🧑  作者: Mango
本题是 UGC NET CS 2015 年 6 月 – III 的第 71 题,针对计算机科学专业。该题主要考察了程序员在编写 C 代码时的一些细节问题。
以下是问题 71 的完整描述:
void fun(int n)
{
if(n > 0)
{
fun(n-1);
printf("%d ", n % 10);
fun(n/10);
}
}
假设 fun(2048)
的执行结果为 8 4 0 2
,则 fun(2458)
的执行结果为什么?
A. 8 4 5 2
B. 2 4 5 8
C. 2 4 8 5
D. 5 8 4 2
请从 A、B、C、D 四个选项中,选出正确的答案。
本题的关键是理解给定的 fun
函数的代码含义。
该函数先递归调用 fun(n-1)
,再打印 n%10
(即 n
的个位数),最后递归调用 fun(n/10)
。由于是递归调用,因此可以理解为是按照 n 的从低位到高位的顺序输出各位数字。
因此,当 fun(2048)
的执行结果为 8 4 0 2
时,可以得到以下结果:
fun(2048)
|->fun(204)
| |->fun(20)
| | |->fun(2)
| | | |->printf("2 ")
| | |<-fun(2)
| | |->printf("0 ")
| |<-fun(20)
| |->printf("4 ")
|<-fun(204)
|->printf("8 ")
|->fun(0)
因此,可以知道 fun(2458)
的执行结果应为 8 5 4 2
,因为这个数的从低位到高位的顺序分别是 8
、5
、4
、2
。
因此,答案为选项 A:8 4 5 2
。