递归函数不返回指定的值

2024-04-25 09:39:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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;
    }
}

类的set_price()方法如下所示

^{pr2}$

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

我们将不胜感激。在


Tags: 函数用户newloadpricemaxstddouble
2条回答

您没有使用递归调用的返回值。你需要做的是:

return load_price();

谁说服你用递归来解决那个问题的?在

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

相关问题 更多 >