棘手的递归功能007

use*_*030 4 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;
 } 
Run Code Online (Sandbox Code Playgroud)

CCo*_*der 8

这很简单.

数将只有当打印M(Q-1)的回报0,这时的价值Q7.

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

  • 也许您应该解释格式.第三个数字是7可能并不明显. (2认同)