为什么递归在 C 中没有按预期工作

Why is recursion not working as expected in C

我想将用户输入的 int 中的数字从 char 计数到零。此代码仅进行 1 个循环。 (请帮助我理解第二部分的错误。)

void count_down_from(int num);
int main()
{
    int start;
    char letter;
    printf("print letter to reduce to zero in ACSCII");
    scanf("%c", &letter);
 
    count_down_from(letter);
    return 0;
}

这部分工作不好:

 void count_down_from(int num)
    {
        if (num > 0)
        {
            --num;
            count_down_from;
            printf("%d\n", num);
        }
        else
            return;
    }
    }

预期的行为:

void count_down_from(int num)
{
    printf("%d\n", num);
    --num;
    if (num < 0)
        return;
    else
        count_down_from(num);
}

在第二个块中的函数调用中缺少 (num) 个。

看看我的修改

void count_down_from(int num)
    {
        if (num >= 0) //need the >= operator to go down to zero not just 1
        {

            printf("%d\n", num);
            --num;
            count_down_from(num); //you need to send num to the call otherwise it won't be a recursive function
        }
        else
            return;
    }