这段代码到底发生了什么?

Gho*_*ing 3 c recursion function

我有一个包含递归函数的代码.我浪费了大量的时间进行递归,但我仍然无法得到它:

#include<stdio.h>
void count(int);

int main()
{
    int x=10,z;
    count(x);
}

void count(int m)
{
    if(m>0)
        count(m-1);
    printf("%d",m);
}
Run Code Online (Sandbox Code Playgroud)

当第一次count调用参数为10.它满足条件,然后在这里启动递归部分.当函数调用自身时会发生什么?我不明白.请参考堆栈说明.

md5*_*md5 31

虽然m大于0,但我们称之为count.以下是堆栈调用的表示:

 count (m = 10)  
   count (m = 9)  
     count (m = 8)  
       count (m = 7)  
         count (m = 6)    
           count (m = 5)     
             count (m = 4)     
               count (m = 3)     
                 count (m = 2)     
                   count (m = 1)
                     count (m = 0)
                     printf 0
                   printf 1
                 printf 2
               printf 3
             printf 4
           printf 5
         printf 6
       printf 7
     printf 8
   printf 9
 printf 10
Run Code Online (Sandbox Code Playgroud)