使用递归打印输出

Using Recursion To Print Output

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

void main()
{
    static int i=5;
    clrscr();

    if(--i)
    {
        printf("%d",i);
        main();
    }
    getch();
}

当我 运行 这段代码时,它没有给出任何输出,当我删除 getch() 然后在 运行 之后,当我切换到输出屏幕时它显示 ouput 。为什么?

我正在使用 Turbo C++。

printf 函数在内部缓冲输出,直到

  1. 缓冲区已满
  2. 它被要求打印一个换行符(\n)
  3. stdoutfflush()
  4. 齐平

您没有执行 2 或 3 中的任何一个,缓冲区肯定大于 5 个整数。

你可能想要

printf("%d\n",i);

如果您希望在不换行的情况下打印整数,

printf("%d ",i);
fflush(stdout);

如果每次迭代都中断,您会看到调试器的输出,但由于您显然只是在执行程序,所以您看到的是最后一次 clrscr(); 的结果。因为 i 是 0,所以你没有进入 if,打印发生的地方你正好在 getch()。希望这能回答您的问题。