0

这是我的递归程序,它反转在 eof 之前输入的数字,但是当找到 eof 字符^Z时它不会停止 。直到我按回车键并在新行中写入 eof 字符。

示例图片:http ://www.imageupload.org/?d=F9D743081

#include <iostream>
using namespace std;
void recursive()
{
    long double n;
    if((cin>>n))
        recursive();
        
    cout<<n<<endl;
}
int main()
{
    recursive();
    return 0;
}

怎么了?

4

1 回答 1

3

您应该将代码编写为:

void recursive()
{
    long double n;
    if(cin>>n) // extra parens aren't necessary.
    {
       recursive();
       cout<<n<<endl;
   }
}

它现在只打印成功读取的值。您的程序也会打印不成功的读取;最后一次读取不成功,但您cout仍然尝试打印n

顺便说一句,你不需要按下^Z停止递归。您可以按一些字母或其他一些非数字字符来停止递归。

演示:http ://www.ideone.com/D4XT1

于 2011-06-19T08:31:30.117 回答