猿问

递归函数不返回指定的值。

递归函数不返回指定的值。

我正在调试一个递归函数,用于验证用户输入并在输入正常时返回值。该函数如下所示:

double load_price(){
    double price;

    Goods * tempGd = new Goods();

    cin >> price;

    while (!cin)
    {
        cin.clear();#undef max
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        cout << endl;
        cout << "You didn't enter a number. Do so, please: ";
        cin >> price;
    } // endwhile
    if (!tempGd->set_price(price))
    {
        cout << endl;
        cout << "The price " << red << "must not" << white << " be negative." << endl;
        cout << "Please, insert a new price: ";
        load_price();
    }
    else
    {
        delete tempGd;
        return price;
    }}

的设置价格()的方法货物类如下所示

bool Goods::set_price(double price){
    if (price> 0)
    {
        priceSingle_ = price;
        priceTotal_ = price* amount_;
        return true;
    }
    return false;}

我试着在纸上画这个问题,但是我的所有图表看起来都和我的函数看起来一样。我认为回报有一些问题,但我不知道在哪里。

我们将非常感谢您的帮助。


达令说
浏览 427回答 2
2回答

30秒到达战场

您没有使用递归调用的返回值。你需要做的是:return&nbsp;load_price();

侃侃无极

是谁说服你用递归来解决这个问题的?#undef&nbsp;maxdouble&nbsp;load_price(){ &nbsp;&nbsp;&nbsp;for(;;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;price; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;>>&nbsp;price; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!cin) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin.clear(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cin.ignore(std::numeric_limits<std::streamsize>::max(),&nbsp;'\n'); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;endl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"You&nbsp;didn't&nbsp;enter&nbsp;a&nbsp;number.&nbsp;Do&nbsp;so,&nbsp;please:&nbsp;"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!Goods().set_price(price)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;endl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"The&nbsp;price&nbsp;"&nbsp;<<&nbsp;red&nbsp;<<&nbsp;"must&nbsp;not"&nbsp;<<&nbsp;white&nbsp;<<&nbsp;"&nbsp;be&nbsp;negative."&nbsp;<<&nbsp;endl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"Please,&nbsp;insert&nbsp;a&nbsp;new&nbsp;price:&nbsp;"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;price; &nbsp;&nbsp;&nbsp;}}
随时随地看视频慕课网APP
我要回答