Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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_Algorithm_Sorting_Recursion - Fatal编程技术网

Java 为什么我的函数不能给出正确的输出?

Java 为什么我的函数不能给出正确的输出?,java,algorithm,sorting,recursion,Java,Algorithm,Sorting,Recursion,我的函数检查数组是否使用递归进行排序。 不幸的是,对于每个数组,它都返回false Function call : sorted(a,0,a.length) where a[] = {1,2,3}; boolean sorted(int[] a , int s , int n) { if(s+1==n) return true ; if(a[s]<=a[s+1]) sorted(a,s+1,n); return false ; }

我的函数检查数组是否使用递归进行排序。 不幸的是,对于每个数组,它都返回
false

Function call : sorted(a,0,a.length) where a[] = {1,2,3}; 

boolean sorted(int[] a , int s , int n)
{
    if(s+1==n)
        return true ;
    if(a[s]<=a[s+1])
        sorted(a,s+1,n);
    return false ;
}
函数调用:排序(a,0,a.length),其中a[]={1,2,3};
布尔排序(int[]a,int s,int n)
{
如果(s+1==n)
返回true;

如果(a[s]您不使用递归调用的结果,可能看起来

 if(a[s]<=a[s+1])
      return sorted(a,s+1,n)
 else
     return false;

if(a[s]您不使用递归调用的结果。也许它看起来像

 if(a[s]<=a[s+1])
      return sorted(a,s+1,n)
 else
     return false;

如果(a[s]忽略对
sorted
的递归调用的结果。只需返回它,就可以了:

boolean sorted(int[] a , int s , int n)
{
    if(s+1==n)
        return true ;
    if(a[s]<=a[s+1])
        return sorted(a,s+1,n); // Here!      
    return false ;
}
布尔排序(int[]a,int s,int n)
{
如果(s+1==n)
返回true;

如果(a[s]忽略对
sorted
的递归调用的结果,只需返回它,就可以了:

boolean sorted(int[] a , int s , int n)
{
    if(s+1==n)
        return true ;
    if(a[s]<=a[s+1])
        return sorted(a,s+1,n); // Here!      
    return false ;
}
布尔排序(int[]a,int s,int n)
{
如果(s+1==n)
返回true;

如果(a[s]当您可以使用迭代进行时,为什么要使用递归方法?您的意思是
返回排序的(a,s+1,n)
?当前您正在丢弃递归调用的返回值。我知道。我只是在学习递归。这是一个简单的程序,但我一直在学习它。@khelwood非常感谢。它很有效。如果条件为真,我就递归调用。如果条件不满足,它应该返回false。最后,它应该返回true。既然可以使用迭代,为什么还要使用递归方法呢?您的意思是
返回排序的(a,s+1,n)
?当前您正在丢弃递归调用的返回值。我知道。我只是在学习递归。这是一个简单的程序,但我一直在学习它。@khelwood非常感谢。它很有效。如果条件为真,我就递归调用。如果条件不满足,它应该返回false。最后,它应该返回true。返回和不返回它之间有什么区别。你能解释一下吗?我有点困惑。因为在这两种情况下,递归都存在,@akisonlyforu不返回,你只是对结果不做任何处理。即使递归以
true
终止,你也只从最后一行返回
false
。什么将是返回和不返回它之间的区别。你能解释一下吗?我有点困惑。因为在这两种情况下,递归都存在,@akisonlyforu不返回,你只是对结果不做任何处理。即使递归以
true
终止,你也只是从最后一行返回
false
。你会怎么做我是返回和不返回的区别。你能解释一下吗?我有点困惑。因为在这两种情况下,递归都存在。当你只调用递归函数而不分配它的结果时,你完全忽略了它的工作。调用链将在数组端结束,但你不知道检查结果。想象一下你要求公共汽车上有人给你买票。最后一个人拿到票却不退票…退票和不退票的区别是什么。你能解释一下吗?我有点困惑。因为在这两种情况下,递归都存在。当你只调用递归函数而不指定其结果时,你忽略了它的工作全部。呼叫链将在数组端结束,但您不知道检查结果。假设您要求公共汽车上的一些人为您买票。最后一个人拿到票却不退票。。。