为什么这个阶乘递归程序不起作用?

why does this recursive program for factorial not work?

下面是代码,请指出我错的地方。 我已经声明,定义了函数,我不知道哪里错了。

#include<stdio.h>
int factorial(int b); /* Declaration */


int main()
{
    int num;
    printf("Enter number: ");
    scanf("%d", &num);
    printf("%d",factorial(num));
    return 0;
}

int factorial(int b) /*Function definition*/
{

    return b*factorial(b-1);

}

您需要在某个时候结束递归:

int factorial(int b) /*Function definition*/
{
    if (b == 0) return 1;
    return b*factorial(b-1);

}