Elo,我从旧考试中得到了这个代码片段。这很棘手,我需要一些帮助来弄清楚它是如何打印“007”的。
#include <stdio.h>
/* Desmond Llewelyns */
int M(int Q);
int main(void)
{
M(9);
return 0;
}
int M(int Q)
{
if(Q>1)
if(M(Q-1)==0)
printf("%03d\n", Q);
return Q-6;
}
这很简单。
M(Q-1)
仅当返回时才会打印数字0
,并且当值为Q
is时会发生这种情况7
。
关于零,这是因为您要求 printf 在开头打印零的 3 个位置打印数字。在这里printf("%03d\n", Q);
阅读更多。
当 Q 等于 7 时,M(Q-1) 返回 0
printf("%03d\n", Q) 将打印 7 到 3 个位置,结果为 007