为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个函数总是返回 0 或 1

为什么这个函数总是返回 0 或 1

有只小跳蛙 2022-06-04 14:56:53
我正在尝试学习一些关于递归的知识,所以我正在尝试做一些练习,但现在我有点卡住了,因为我不知道为什么这个函数总是返回 1 或 0 我试图计算数量11 在 int 数组中的出现。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);        if(index<nums.length)            return index;    }     return count;}public static void main(String[] args) {    int array11[]={11,1,2,36,11};    System.out.println(array11(array11, 0));    }}
查看完整描述

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;

}


查看完整回答
反对 回复 2022-06-04
?
扬帆大鱼

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));

     }


查看完整回答
反对 回复 2022-06-04
?
30秒到达战场

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);


   }



查看完整回答
反对 回复 2022-06-04
  • 3 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信