我是C ++的新手。我已经制作了一个计算值的代码,但我不确定如何获得它在上次调用中计算的先前计算的值。在我的理解中,这样做的方法是在数组中存储值,但我不确定这样做的确切结构/方式。提前谢谢。
double CalculateValue(Node* node)
{
float gamma=0.3;
double Value = 0.0;
Value = ((1-gamma)* previousValue)+ gamma); // how to get this previous value
if (Value > previousValue)
答案 0 :(得分:1)
我强烈建议避免使用全局/静态变量,创建一个只存储值的小类并且有一个成员函数来进行计算可能是个更好的主意。
答案 1 :(得分:0)
如果你需要找到两次调用函数返回的值之间的差异,那么就应该采用以下方法:
{
const auto val1 = CalculateValue();
const auto val2 = CalculateValue();
std::cout << "Difference is: " << std::abs(val1 - val2) << std::endl;
}
答案 2 :(得分:0)
您正在寻找备忘录模式(如果您正在使用Google搜索,则不记住)。这可能会派上用场:Memoized, recursive factorial function?
答案 3 :(得分:0)
以下是使用课程实现目标的示例 (我还没有测试过,所以这里可能会有一些错误)
class Solution {
public:
void init_value(double val){ // initalize the value
_previousValue = val;
}
double CalculateValue(Node* node){
float gamma=0.3;
double Value = 0.0;
Value = ((1-gamma)* _previousValue)+ gamma); // _value would be your previous value
if (Value > _previousValue){
//whatever you want to do in here
}
_previousValue = Value; // set _previousValue to the new calculated Value
return Value;
}
private:
double _previousValue; // call init_value(val) to initliaze _previousValue = val OR you can hard code _previousValue if it is always like 0 or something
}
int main() {
Solution solution = new Solution();
solution.init_value(0);
Node *node; // I don't know what your Node struct looks like so...
double value = CalculateValue(node);
return 0;
}