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