我正在试图弄清楚这种递归方法的作用。有人可以通过递归调用的几个步骤吗?我似乎没有得到它。
public static int p(int[ ] a){
if(a.length==0) return 0;
else if(a.length==1) return a[0] %2;
else return p(Arrays.copyOfRange(a,0,a.length/2)) + p(Arrays.copyOfRange(a,a.length/2,a.length));
}
答案 0 :(得分:1)
作为提示,两个递归调用分别将函数应用于数组的第一个和第二个半部分。
作为第二个提示,由于每个调用对两个子调用的值求和,因此结果将是应用于由单个元素组成的每个单例数组的函数之和。
最后,如果该元素为偶数,则单个元素的结果为0;如果该元素为奇数,则结果为1。
鉴于这些提示,您能找到这种方法的简单描述吗?
希望这有帮助!