有人能帮我理解这个程序吗?

Mar*_*ača 1 c recursion

这是我的计划C.

f(int n){
    if(!n){
        return 0;
    }
    printf("%d", f(--n));
    printf("*");
    return (n+1);
}

int main()
{
    f(3);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它打印:

0*1*2*

现在我无法理解为什么它首先进入内部printf并在(--n)中得到一个但是在它达到0之前不会打印任何东西

Nip*_*ath 8

一张图片胜过千言万语.

  • 实线箭头=函数调用

  • 虚线箭头=函数返回.

在此输入图像描述