在java中用递归求max int

lhcgjxsq  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(367)

你好,我是java新手,所以请温柔一点。我相信代码似乎冗长难看,但我们都从某个地方开始。
我试图用递归法找出数组中的最大数。对于默认的-1工作的任何数组,我的输出都是0。
任何能帮我指引方向的人都会帮我大忙的
提前谢谢大家-

public int maxInt(MyList<Integer> m){
int result = 0;
int e0;
int len = m.length();
int e1;

if (len == 0) {
    result = -1;
    }
else if(len == 1) {
    e0 = m.getElement(0);
    result = e0;
    }   
else if(len == 2) {
    e0 = m.getElement(0);
    e1 = m.getElement(1);
    if (e0 > e1) {
        result = e0;
    }else {
        result = e1;
        }
    }
else if(len > 2) {
    e0 = m.getElement(0);
    e1 = m.getElement(1);
    if (e0 <= e1){
        m.removeElement(0);
        result = maxInt(m);
        m.addElement(0, e0);
        }       
    }   
return result;
}
hgtggwj0

hgtggwj01#

在你的 len > 2 案例,如果 e0 如果是较大的数字,什么都不会发生。一般来说,这段代码只是被破坏了-您想首先运行 m.removeElement , maxInt , m.addElement 编码以从子列表中获取最大的数字,然后将该数字与元素0进行比较,返回较大的一个。
我建议你学会调试-只是写代码,然后如果它不工作,祈祷有人在这样的帮助是。。。最多也就是冗长的代码;)
很简单!带上笔和纸,和电脑一起写字。你在脑子里运行程序,写下发生了什么。使用调试器单步执行代码(或者,如果必须的话,在代码中撒上一堆system.out.println语句)。
每次节目的结果都和你想的不一样?你发现了一个窃听器。
就这么简单。

nzrxty8p

nzrxty8p2#

你说你是新来的 Java 但这和 Java . 这与理解有关 recursion 其他语言中的陷阱和陷阱也是一样的(或者非常相似)。
我可以告诉你现在的代码应该不超过10行(如果你有一个 sublist 方法。
我建议你先尝试一些简单的方法来获得成功 feel 用于递归。对前n个奇数整数求和或简单地打印1到n的值。然后仅通过更改print语句的位置来打印值n到1。

相关问题