在C中使用递归函数,为什么以下程序的输出为012345?

0 c

我在下面使用了递归函数的概念,但是从我对概念的理解,代码的输出应该是0,但这里的输出是012345,我不确定它是如何工作的.

有人可以向我解释一下,因为我的大学教授不能这样做.

#include<stdio.h>
#include<conio.h>

int yo(int a)
{
    if(a>0)
    {
        yo(a-1); //using recursion function
    }

    printf("%d",a); //printing value
}

void main()
{
    yo(5);
    getch();
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ner 6

printf是递归调用之后; 因此,的"栈" a与-值yo被称为是5,4,3,2,1,0,最后之前yo与参数值-call 0开始打印; 那么1,2,......

使用调试器并试用它!