这个函数是怎么运行的啊?我搞不明白,求指导

#include "stdio.h"
void fun(int k);
void fun(int k)
{
if(k>0)
fun(k-1);
printf("%d",k);
}
int main()
{
int w=3;
fun(w);
printf("\n");
}

函数调用自身,就是递归
递归的函数一般都会有条件判断,在不同的情况下调用自身,或者不调用,循环往复

例如k=3

fun(3)
if(3>0)//满足条件继续递归
    fun(2)
        if(2>0)//满足条件继续递归
            fun(1)
                if(1>0)//满足条件继续递归
                    fun(0);  
                        if(0>0)不满足条件,到这里不再继续调用自身
                        printf("%d",0);//继续向下执行
                    fun(0)函数执行结束返回
                    printf("%d",1);//继续向下执行
            fun(1)函数执行结束返回
        printf("%d",2);//继续向下执行
  fun(2)函数执行结束返回
printf("%d",3);//继续向下执行
fun(3)函数结束

这个函数fun()的作用就是每次将变量减一并输出变量值
开始的时候变量w=3,然后将变量w传入fun()函数,k被赋值为3,进行if判断,若变量>0,变量k减一后再次传入fun函数,然后再次调用函数fun(),若k<=0,则进行回溯,同时输出变量k的值。
输出的结果为:

0123