问题是这样的: 编写一个递归函数,获取两个正整数数组及其大小。 如果存在至少一个公共对象,则该函数返回0;如果不存在,则返回1。
int disjoint(int a[], int n1, int b[], int n2)
要求如下:
我目前在获取所有组合进行比较时遇到问题,换句话说,如何将嵌套循环转换为递归。
更新 这个可行,但它会进行不必要的迭代。
int disjoint(int g1[], int n1 , int g2[], int n2 ){
if(g1[0]==g2[0])return 0;
if(n2-1>0&&n1-1>=0){
return disjoint(g1+1,n1-1,g2,n2)*disjoint(g1,n1,g2+1,n2-1);
}
return 1;
}
答案 0 :(得分:2)
我没有为你解决但是......
使用伪注释:如果a[0..n]
且b[0..m]
和a[0] != b[0]
不相交且},则数组a[1..n]
和b[0..m]
是不相交的em> a[0..n]
和b[1..m]
是不相交的。
我认为我做对了......
好的,另一个提示:其中一个递归调用可能看起来像disjoint(a + 1, n1 - 1, b, n2)
在进行递归时,它(至少对我而言)更好地查看问题并根据问题本身制定解决方案,而不是编写迭代解决方案然后尝试"翻译& #34;它