求助void类型函数是如何实现用递归输出1-n个数字

求助请问大神以下printN函数是怎么实现递归输出的呀?新人求助!!

#include <stdio.h>
void printN(int N)
{
    if(N)
    {
        printN(N-1);
        printf("%d\n",N);
    }
    return;
}
main()
{
    int n;
    scanf("%d",&n);
    printN(n);
}

**
递归调用其实就是产生了一个函数调用链条

比如给个参数 3 printN(3) -> printN(2) -> printN(1) -> printN(0) 最后一个函数if判断为假 调用链条终止 然后原路返回

printN(3) 返回后输出3 <-- printN(2) 返回后输出2 <-- printN(1) 返回后输出1 <-- printN(0)

bingo
**