Java 从递归方法返回布尔值

Java 从递归方法返回布尔值,java,recursion,Java,Recursion,这是一个补充问题,与我最近提出的一个问题一致。我有下面的递归代码,它将给出整数列表中的最大数 static int maximum (List<Integer> a) { if ((a.getTail().isEmpty())) return 0; else { int n = maximum(a.getTail()); System.out.println(n); if (a.getHead()

这是一个补充问题,与我最近提出的一个问题一致。我有下面的递归代码,它将给出整数列表中的最大数

     static int maximum (List<Integer> a)
 {


 if ((a.getTail().isEmpty()))
     return 0;
 else {
         int n = maximum(a.getTail());
         System.out.println(n);

         if (a.getHead() > n) {
            return (a.getHead());
        } else {
            return m;

            }}

 }
静态整数最大值(列表a)
{
if((a.getTail().isEmpty())
返回0;
否则{
int n=最大值(a.getTail());
系统输出println(n);
如果(a.getHead()>n){
返回(a.getHead());
}否则{
返回m;
}}
}
这很有帮助。但我真正想做的是能够根据列表中值的增加或减少返回布尔值true或false。所以我的方法是:

     static boolean maximum (List<Integer> a)
 {


 if ((a.getTail().isEmpty()))
     return true;
 else {
         int n = maximum(a.getTail());
         System.out.println(n);

         if (a.getHead() > n) {
            return true;
        } else {
            return false;

            }}

 }
静态布尔最大值(列表a)
{
if((a.getTail().isEmpty())
返回true;
否则{
int n=最大值(a.getTail());
系统输出println(n);
如果(a.getHead()>n){
返回true;
}否则{
返回false;
}}
}
但这不会运行。我面临的挑战是,我编写的递归调用返回一个整数,这样我就可以比较上一个最大值和当前最大值------if(a.getHead()>m)

我想做的是在递归调用中尝试并完成对当前韵文previous max的评估,这样我只需要返回一个布尔值,true或false

例如,如果递归发生时,列表不断增加,则布尔值保持为真,但如果在任何一点上它减少,则会给出一个假值:

1,2,3,4=真

1,2,4,3=错误

谢谢你的帮助,我真的很难理解递归的整个概念……

静态布尔最大值(列表a,布尔cont){
static boolean maximum (List<Integer> a, boolean cont){
    if(cont){
           if ((a.getTail().isEmpty())){
               cont = false;
        }else {
            int n = maximum(a.getTail());
            System.out.println(n);
            if (a.getHead() > n) {
               maximum(a.getHead(), cont);
            } else {
               maximum(n, cont);
            }
        }
    }  
    return cont;
}
如果(续){ if((a.getTail().isEmpty()){ cont=假; }否则{ int n=最大值(a.getTail()); 系统输出println(n); 如果(a.getHead()>n){ 最大值(a.getHead(),cont); }否则{ 最大值(n,续); } } } 返回控制; }
我想让这个方法无效或者返回列表,但我把它保留为布尔值,因为从技术上讲这就是你的问题所要求的


您只需调用cont值为true的方法。通过使用两个参数,您可以继续比较max函数,同时使用布尔值作为递归标志。但是,您无法返回最大值,但可以通过将最大值设置为类实例或作为第三个参数(Double、Integer等)的对象来解决此问题。

您可能遗漏了一些内容:

在函数中,return语句立即终止函数(
break
)。所以在

if(...) { return ...; }
else {...}
→ else是冗余的,如果条件为真,则函数已终止(
break

类似于
a==0
的东西有一个布尔值(
true
false
)。所以

可以缩短为
返回计数==0

我建议总是使用大括号,因为类似于
if(I==0)++I;中断
,表示如果(i==0){++i;}
<代码>中断在任何情况下都将被调用

您想要的是这样的:

静态布尔值已排序(列表)
{
返回从(0,列表)中排序;
}
静态布尔值是从中排序的(整数索引,列表)
{
如果(index+1>=a.size()){return true};
返回list.get(index)
当您只传入一个列表时,最大值函数如何返回布尔值?对不起,我的问题不清楚,我将对其进行编辑,所以您真的只想检查它是否正确-简单地说-谢谢您显然您没有尝试编译此函数。不-我知道它不会编译。这说明了我正在尝试实现的目标。这不是getTail或类列表的getHead方法,所以我不确定您希望编译WSJ的是什么。imo有点挑剔,因为它只是概念性的,但我缩短了它以消除任何可能的混淆。有些人会在没有解释的情况下简单地否决它。感谢我指出了这一点。我认为删除
如果(a.isEmpty()){return false;}
是的,做任何你想做的事都是安全的。你是对的,一个空列表可以被称为排序
if(i==0) { return true; }
else { return false; }
static boolean is_sorted(List<Integer> list)
{
  return is_sorted_from(0, list);
}

static boolean is_sorted_from(int index, List<Integer> list)
{
  if(index+1 >= a.size()) { return true };
  return list.get(index) < list.get(index+1)
         && is_next_sorted(index+1, list);
}