2014-07-02 68 views
0

以下方法的返回語句難倒我:用||遞歸返回語句在它

public static boolean groupSum(int start, int[] nums, int target, int max) { 

     if (start >= nums.length) { return target == 0; } 
     // can't use max value 
     else if (nums[start] == max) { 
      return groupSum(start + 1, nums, target, max); 
     } 
     else { 
      return groupSum(start + 1, nums, target - nums[start], max) || 
        groupSum(start + 1, nums, target, max); 
     } 
     } 

如果你注意到,return語句具有|| 「或」條款,並且我對這裏返回的條款感到困惑......如果你能提供一個關於它如何工作的解釋,那就太好了。

+0

一個'return'聲明_returns_一個值,而不是一個條款。 「||」是一個應用於兩個操作數併產生一個值的運算符。 –

+0

那麼哪些值被返回?左側還是右側的值?它基於什麼? – user3730244

+0

@ user3730244 - 結果是兩個操作數的比較,而不是任何一個操作數 – kolossus

回答

2

||運算符未選擇要返回哪個表達式,而是執行兩個表達式之間的邏輯或,並在此之後,return返回結果。

return語句將返回true如果任一表達式爲true,它將返回false如果兩個表達式是false

+0

@RichardTingle意思一件事,打另一個。糾正。 – rgettman

4

由於||是一個所謂的short curcuit運算符,因此會計算第一個表達式,並且如果且僅當它的計算結果爲true,則立即返回true,而不計算第二個表達式。如果失敗,則評估第二個,並返回結果。

所以,如果你有

a() || b() 

和計算結果爲true B()不計算

+0

如果一個劑量沒有評估爲真,b又是什麼? – user3730244

+0

@ user3730244然後你得到'false ||返回FALSE。那是什麼意思? – Justin

+0

我不知道什麼是false ||錯誤意味着......方法剛剛崩潰了嗎? – user3730244