Почему моя функция не дает правильного вывода? - PullRequest
0 голосов
/ 18 мая 2018

Моя функция проверяет, отсортирован ли массив или нет с использованием рекурсии.К сожалению, он возвращает 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 ;
}

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы игнорируете результат рекурсивного вызова 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 ;
}
0 голосов
/ 18 мая 2018

Вы не используете результат рекурсивного вызова.Возможно, это может выглядеть как

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

или (если Java использует быструю оценку сложных условий):

return (a[s]<=a[s+1]) && (sorted(a,s+1,n))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...