我需要知道这两个句子在编程中是否相同

时间:2015-11-29 05:20:03

标签: java c syntax return

我需要知道是否:

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

相当于:

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

如果有人能够快速解决这个问题,我将非常感激。

2 个答案:

答案 0 :(得分:0)

它们不等价,因为someBooleanRecursiveMethod返回一个布尔值(推测),第一个表达式可以求值为false ||假的是假的。 除非您指定它,否则第二个表达式永远不会返回false。

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

在这种情况下,两个表达式都是相同的,应用于n或n的方法将返回true,否则,当两者都为false时返回false(与运算符相同的行为)。

答案 1 :(得分:0)

是的,当然,说||与说OR是一样的。你的例子做了同样的事情,它只是将两个语句分开。它们基本上是一样的。

例如:

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

现在,我可以通过两种方式清理这两行代码。我可以做一个switch语句,或者,我可以使用or运算符:

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语句。它略高一些,但它只是说,

我有这个条件,我有多个选项,在这个选项上执行此操作

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;
}

基本上,最后你只是在做同样的事情。要么是在一行代码中完成所有操作,要么是将它拆分,并在多行代码中完成。如果您想要为每个输入输出特定输出,请将其拆分。否则,无论哪种方式都很好。