3 回答
TA贡献2003条经验 获得超2个赞
它返回0一个空数组和1一个非空数组。您看到的结果来自index,而不是count您期望的结果。
我会在不涉及领域的情况下编写它。
public int m(int[] nums, int index, int count) {
return index < nums.length ?
m(nums, index + 1, nums[index] == 11 ? ++count : count) :
count;
}
或(@Pshemo 在评论中建议)
public int m(int[] nums, int index) {
return index < nums.length ?
(nums[index] == 11 ? 1 : 0) + m(nums, ++index) :
0;
}
TA贡献1799条经验 获得超9个赞
您返回索引。标记您的问题:
public class Uloha06 {
public static int count = 0;
public static int array11(int[] nums, int index){
if(index<nums.length){
if(nums[index]==11)
count+=1;
index++;
array11(nums,index);
/// booom here index is 1 but you want count
//if(index<nums.length)
// return index;
}
return count;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int array11[]={11,1,2,36,11};
System.out.println(array11(array11, 0));
}
TA贡献1828条经验 获得超6个赞
这应该工作
public static int array11(int[] nums, int index){
if(index < 0){
return 0;}
else if (nums [index] == 11)
{
return (array11(nums, index-1) + 1);
}
else {
return array11(nums, index-1);
}
}
添加回答
举报