recursion函数不返回指定的值
我想debugging一个recursion函数来validation用户input,并返回一个值,当input是确定的。 该函数如下所示:
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; } }
Goods类的set_price()方法如下所示
bool Goods::set_price(double price) { if (price> 0) { priceSingle_ = price; priceTotal_ = price* amount_; return true; } return false; }
我试着在纸上画出这个问题,但是我所有的图表都看起来像我的function已经看起来一样。 我认为回报有一些问题,但我不知道在哪里。
帮助将不胜感激。
您没有使用recursion调用的返回值。 你需要做的是:
return load_price();
谁说你使用recursion来解决这个问题?
#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; } }