SHORT 我应该如何在我的代码中减少(优化)所需的操作数量?
LONGER 为了研究,我编写了一组方程式在C++中输出序列,如果符合模型。在代码的内部是这个函数,它在运行时被多次调用:
int Weight(int i, int q, int d){
int j, sum = 0;
if (i <= 0)
return 0;
else if (i == 1)
return 1;
for (j = 1; j <= d; j++){
sum += Weight((i - j), q, d);
}
sum = 1 + ((q - 1) * sum);
return sum;
}
根据变量 d
的大小、索引 i
的大小以及此函数在代码的其余部分中被调用的次数,会进行许多冗余计算。如何减少计算次数?
理想情况下,例如在计算 Weight(5, 3, 1)
后,我应该如何告诉计算机在调用 Weight(6, 3, 1)
时替换它的值而不是重新计算它的值,考虑到该函数是递归定义的?
在这种情况下,多维向量是否可用于存储值?或者我应该将这些值打印到文件中以供读取?尽管我还没有遇到输入大小溢出的情况,但尾递归是否有助于优化它?
注意:我仍在学习编程,我很惊讶我甚至能够在第一次就正确地建立模型。