所以我在使用递归函数时遇到了麻烦,我的问题是我有一个代表金币的数组,它是一个 [] 这个数组有需要与两个用户共享的硬币,从长远来看,每个用户都可以获得相同数量的黄金或最好的解决方案......就像这样
Gold
10 6 5 2
User A : gets 10 2
User B : gets 6 5
用户 A 和用户 B 之间的绝对值给了我差异。在这种情况下,它将是 1
为了解决这个问题,我需要通过所有可能的组合,这就是我使用暴力和递归函数的原因......为此,我必须运行每一个组合并查看两者之间的绝对差异,如果它比以前的更好我最好将其保存在全局变量中...
问题是该功能根本无法正常工作..如果您帮助我,我将不胜感激...
代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int best = 0; // keeps the best option
int share_friends_recursive(int nelems,int a[],int friend_a,int friend_b,int i){
int sub = 0;
friend_a += a[i];
friend_b += a[i+1];
if(i+1 == nelems){
return 0;
}else{
sub = abs(friend_a - friend_b);
if(sub < best){
best = sub;
}
i++;
share_friends_recursive(nelems,a,friend_a,friend_b,i);
}
}
int main(int argc, char *argv[]) {
//
int nelems = 4;
int a[] = {10,6,5,2};
//friend A can get the first value
// friend B gets the second one ...
share_friends_recursive(nelems,a,0,1,0);
printf("%d \n",best);
return 0;
}