2015-11-29 3 views
-3

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

return someBooleanRecursiveMethod(n) || someBooleanRecursiveMethod(n-1); 

эквивалентно:

if (someBooleanRecursiveMethod(n)) 
    return true; 
else if (someBooleanRecursiveMethod(n - 1)) 
    return true;  
return false; 

если кто-то может решить этот вопрос быстро я Будем очень благодарны.

ответ

0

Да, определенно, высказывание || такое же, как и слово ИЛИ. Ваш пример делает то же самое, он просто разрывает два утверждения. Они, по сути, одинаковы.

Например:

if (I like apples) { 
    System.out.println("I like a fruit") 
} else if (I like bananas) { 
    System.out.println("I like a fruit") 
} 

Теперь я могу очистить эти две строки кода двумя способами. Я мог бы сделать переключатель заявление, или я могу использовать или оператор:

if (I like bananas OR I like apples) { 
    System.out.println("I like a fruit") 
} 

AKA

if (x = 7 || x = 8) { 
    System.out.println("Either 7 OR 8") 
} 

Другой способ я уже говорил, называется переключатель заявление. Это немного более продвинутый, но он просто говорит,

У меня есть это состояние, у меня есть несколько вариантов, сделать это на этой опции

switch(x) {  
case 6:  
    System.out.println("It is 6"); 
    break;  
case 7:  
    System.out.println("Either 7 OR 8") 
    break; 
case 8: 
    System.out.println("Either 7 OR 8") 
    break; 
case 9:  
    System.out.println("It is 9") 
    break; 
} 

В основном, в конце концов, вы просто делаете то же самое. Либо вы делаете все это в одной строке кода, либо делитесь им и делаете это в нескольких строках кода. Если вам нужны конкретные выходы для каждого входа, разделите его. В противном случае, вы в любом случае добры.

+1

Вы действительно пишете такой код? Можете ли вы исправить ошибку при поиске в этом виде кода? Или вы полагаетесь на среду IDE для ее форматирования? Это похоже на то, что многие программисты делают, я лично не понимаю, почему не форматирование кода сделает вас быстрее! –

+0

@iharob Вы говорите о моем форматировании ...?Я написал это, чтобы помочь пользователю, и код кажется читаемым. Я просто написал этот код в самом переполнении стека, а не в среде IDE. –

+0

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

0

Они не эквивалентны, так как someBooleanRecursiveMethod возвращает логическое (предположительно), первое выражение может вычисляться как false || false, что является ложным. Второе выражение никогда не может вернуть false, если вы не указали его.

if (someBooleanRecursiveMethod(n)) 
    return true; 
else if (someBooleanRecursiveMethod(n - 1)) 
    return true; 
else 
    return false; 

В этом случае да, оба выражения являются такими же, как метод, применяемый к п или п - 1 возвращает истину, в противном случае, когда оба являются ложными возвращает ложь (такое же поведение, как и оператор).

+0

Последний 'else' не очень уместен для результата. Если оба условия ложны, он вернет 'false', иначе он вернет' true', что и сделает оператор '||'. Я понимаю ваше замешательство, это ошибка OP из-за того, насколько сильно код был отформатирован. Это свидетельствует о важности форматирования кода. –

+0

Когда он/она сначала отправил вопрос, в коде отсутствовало ложное возвращение –

+0

Нет, это не так. Но код был очень трудно понять. Даже после того, как кто-то его редактировал. ОП никогда не редактировал вопрос. BTW, в c или C++ недостающее 'return' вызовет * Undefined Behavior *, я не знаю, будет ли java иметь возвращаемое по умолчанию значение. –

Смежные вопросы