2017-02-03 3 views
-4

Я не понимаю, почему я получаю «return statement missing».Java Beginner Recursion with boolean

Вот изображение с кодом:
enter image description here

+0

Все пути не возвращают значение .... –

+0

Вы должны что-то вернуть в условие elseif. –

+2

Пожалуйста, приложите код как текст, а не как изображение. Это было бы намного проще, если бы другие читали –

ответ

1

В вашем 2-е и 3-е, если условия нет возвращения. Вместо вашего else, просто верните false.

Так гласит:

public class isTrans { 
     public static boolean isTrans(String s,String t) { 
      if (t.length()==1 && (s.charAt(s.length()-1))==t.charAt(0)){ 
       return true; 
      } else if (s.charAt(0)==t.charAt(0)){ 
       return isTrans(s,t.substring(1)); 
      } else if (s.charAt(1)==t.charAt(1)){ 
       return isTrans(s,t.substring(1), t); 
      } 
      return false; 
     } 
    } 
+0

, если я удаляю else и оставляю только возвращаемые значения false, я всегда получаю return false – OLY

+1

Thank youuuuuuu sooooo muchhhhhhhhh – OLY

+0

Ваш приветствуется! – SPlatten

0

В этом случае вы должны вернуться во всех условиях или вернуться в конце метода.

0
if(/*...*/) { 
    return true; 
} 
else if(/*...*/) { 
    return isTrans(/*...*/); // return whatever isTrans returns 
} 
else if(/*...*/) { 
    return isTrans(/*...*/); // here too 
} 
else { 
    return false; 
} 
+1

Хотя вы, возможно, решили проблему этого пользователя, ответы на код не очень помогают пользователям, которые приходят к этому вопросу в будущем. Измените свой ответ, чтобы объяснить, почему ваш код решает исходную проблему. –

0

Вы должны вернуть результат выполнения функции в вашем else if, так что рекурсия работает должным образом. Например:

return isTrans(s, t.substring(1))