我有以下排列代码
void permute(Matrix *m,int *array,int i,int length) {
if (length == i){
printA(array,4);
return;
}
int j = i;
for (j = i; j < length; j++) {
swap(array+i,array+j);
permute(m,array,i+1,length);
swap(array+i,array+j);
}
return;
}
它的工作正常,但我想对每个返回值并将它们加在一起的数组的每个排列执行一个函数。
示例:[1 2 3 4] - &gt; function(array) - &gt; 12,[1 3 2 4] - &gt; function(array) - &gt; 13 =&gt; 13 + 12 = 25 (这将是决定性计算器)
试过这个:
double cnt = 0;
if(lenght == i){
cnt += function1(array,4);
}
但它只显示不同的值而不是总结它们。应该在哪里修复功能?
[编辑]
由于在每个排列中递归调用函数,我需要使用 static 全局计数器来汇总值。所以我只是放在static double cnt = 0;
的某处并且工作正常。
答案 0 :(得分:0)
由于在每次排列时递归调用函数,我需要使用 static 全局计数器来汇总值。所以我只是放在某个地方 static double cnt = 0;
并且工作正常。