作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我输入链表的数量是 3 : x1 = 3, x2= 1, x3=2 打印:2 1 3(真的)但是 max=2,我找不到错误,这是我的代码:
int max(Node l){
int max = 0;
if(l == null) return 0;
else
{
if(l.data > max){
max = l.data;
l = l.next;
}
else return max(l.next);
}
return max;
}
int max(){
return max(head);
}
最佳答案
你的逻辑是错误的,因为你总是返回第一个元素的值(因为 l.data > max
总是 true
,因为 max
此时始终为 0
。
递归寻找最大元素的正确思路如下:
最大元素是第一个元素的最大值和列表其余元素的最大值。
即
max(l) is the max of l.data and max(l.next)
所以你的方法应该是这样的:
int max(Node l)
{
if(l == null)
return 0;
else {
int tailMax = max(l.next);
return tailMax > l.data ? tailMax : l.data;
}
}
int max(){
return max(head);
}
关于java - 我想通过递归算法在链表中找到最大节点,但我的代码有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58690245/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!