你好,我是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;
}
2条答案
按热度按时间hgtggwj01#
在你的
len > 2
案例,如果e0
如果是较大的数字,什么都不会发生。一般来说,这段代码只是被破坏了-您想首先运行m.removeElement
,maxInt
,m.addElement
编码以从子列表中获取最大的数字,然后将该数字与元素0进行比较,返回较大的一个。我建议你学会调试-只是写代码,然后如果它不工作,祈祷有人在这样的帮助是。。。最多也就是冗长的代码;)
很简单!带上笔和纸,和电脑一起写字。你在脑子里运行程序,写下发生了什么。使用调试器单步执行代码(或者,如果必须的话,在代码中撒上一堆system.out.println语句)。
每次节目的结果都和你想的不一样?你发现了一个窃听器。
就这么简单。
nzrxty8p2#
你说你是新来的
Java
但这和Java
. 这与理解有关recursion
其他语言中的陷阱和陷阱也是一样的(或者非常相似)。我可以告诉你现在的代码应该不超过10行(如果你有一个
sublist
方法。我建议你先尝试一些简单的方法来获得成功
feel
用于递归。对前n个奇数整数求和或简单地打印1到n的值。然后仅通过更改print语句的位置来打印值n到1。