亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遞歸函數不返回指定的值。

遞歸函數不返回指定的值。

C++
達令說 2019-06-28 15:06:54
遞歸函數不返回指定的值。我正在調試一個遞歸函數,用于驗證用戶輸入并在輸入正常時返回值。該函數如下所示: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;}我試著在紙上畫這個問題,但是我的所有圖表看起來都和我的函數看起來一樣。我認為回報有一些問題,但我不知道在哪里。我們將非常感謝您的幫助。
查看完整描述

2 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

您沒有使用遞歸調用的返回值。你需要做的是:

return load_price();


查看完整回答
反對 回復 2019-06-28
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

是誰說服你用遞歸來解決這個問題的?

#undef maxdouble 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;
   }}


查看完整回答
反對 回復 2019-06-28
  • 2 回答
  • 0 關注
  • 449 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號