在Java中使用递归查找最大整数
你好,我是java新手,所以请温柔一点。我相信代码似乎冗长难懂,但我们都从某个地方开始 我正在尝试使用递归查找数组中的最大数。对于默认值为-1的任何数组,我的输出都是0 任何能帮我指引正确方向的人都会帮上大忙 提前谢谢大家-在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; }
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的值