首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 方法返回值歸納:數組元素全大於 num 返回 -1,索引 12 需數組長度≥13且滿足條件

     編輯:程式設計綜合問答

給定方法:

int foo(int[] array, int num) {
    int i = array.length - 1;
    while (i >= 0) {
        if (array[i] > num) return i;
        i--;
    }
    return i; // i == -1
}

問題 1:何時返回 -1?

迴圈結束條件 i >= 0 失效時 i == -1。即 遍歷完所有元素均未發現 array[i] > num。等價於:數組中所有元素 ≤ num (即 max(array) <= num)。

問題 2:何時返回 12?

返回 12 意味著:

  1. array.length - 1 >= 12 → 數組長度 ≥ 13。
  2. array[12] > num。
  3. 對於所有 j > 12 (即 13 .. length-1),array[j] <= num (否則會更早返回更大索引)。

綜合:數組長度 ≥ 13,且索引 12 的元素 > num,而所有更高索引元素 ≤ num。

歸納邏輯總結

返回值必要條件
-1∀k ∈ [0, length-1], array[k] ≤ num
12length ≥ 13 ∧ array[12] > num ∧ ∀k ∈ [13, length-1], array[k] ≤ num
i (0 ≤ i < length)array[i] > num ∧ ∀k ∈ [i+1, length-1], array[k] ≤ num

方法語義

從右向左查找第一個大於 num 的元素索引 (若無則返回 -1)。這是「最後一個 > num 的位置」。

理解循環不變量與返回條件,即可精準歸納任意返回值場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved