使用递归打印输出

时间:2017-04-13 13:34:04

标签: c++ recursion turbo-c++

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

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

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

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

我正在使用Turbo C ++。

2 个答案:

答案 0 :(得分:0)

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

  1. 缓冲区已满
  2. 要求打印换行符(\n
  3. stdout已使用fflush()
  4. 刷新

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

    你可能想要

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

    如果您希望在没有新行的情况下打印整数,

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

答案 1 :(得分:0)

如果你在每次迭代中断,你会看到带有debuger的输出,但是因为你显然只是执行你的程序,所以你看到的是上一个clrscr();的结果。由于i为0,因此您无法进入if,打印发生在getch()处。希望能回答你的问题。