棘手的递归功能007

时间:2012-11-03 19:38:47

标签: c recursion

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;
 } 

2 个答案:

答案 0 :(得分:8)

这很简单。

仅当M(Q-1)返回0时才会打印数字,而当Q的值为7时会发生这种情况。

关于零,这是因为你要求printf在3个位置打印数字,并在开始时打印零。 printf("%03d\n", Q);了解更多here

答案 1 :(得分:3)

当Q等于7时,M(Q-1)返回0

printf(“%03d \ n”,Q)将打印7到3个位置,结果为007