Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用递归查找最大整数_Java_Recursion - Fatal编程技术网

在Java中使用递归查找最大整数

在Java中使用递归查找最大整数,java,recursion,Java,Recursion,你好,我是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; }

你好,我是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;
}
public int maxInt(MyList m){
int结果=0;
int e0;
int len=m.长度();
INTE1;
如果(len==0){
结果=-1;
}
else if(len==1){
e0=m.getElement(0);
结果=e0;
}   
else if(len==2){
e0=m.getElement(0);
e1=m.getElement(1);
如果(e0>e1){
结果=e0;
}否则{
结果=e1;
}
}
否则如果(len>2){
e0=m.getElement(0);
e1=m.getElement(1);

如果(e0在
len>2
的情况下,如果
e0
是较大的数字,则不会发生任何事情。通常,该代码只是被破坏了-您希望首先运行
m.removeElement
maxInt
m.addElement
代码,从子列表中获取最大的数字,然后将该数字与元素0进行比较,返回wh一个比一个大

我建议你学会调试——只是编写代码,如果它不起作用,那么祈祷有人能帮上忙就好了……最好是编写乏味的代码;)

这很简单!拿一支笔和一张纸,和电脑一起写。你在脑子里运行程序,写下发生了什么。使用调试器逐步完成代码(或者,如果必须的话,在代码中散布大量System.out.println语句)

每次程序的结果和你想的不一样时,你都会发现一个bug


就这么简单。

你说你是
Java
新手,但这实际上与
Java
无关。这与理解
递归有关,在其他语言中,陷阱和陷阱也是相同的(或非常相似的)

我现在可以告诉您,代码应该不超过10行(如果您有
子列表
方法,则应该少于10行)

我建议您首先尝试一些简单的方法,以获得递归的
感觉。对前n个奇数整数求和,或者简单地打印1到n的值,然后仅通过更改print语句的位置来打印n到1的值