昨天介紹完控制流程加上之前的 Kotlin 的型別與特性介紹,相信各位讀者已經有相當的基礎了。今天開始我們將建立在基礎上開始講起函式 (Function)。
函式是當代常見程式語言必備的撰寫手法。透過將重複性高的程式碼包成一個函式可以讓我們透過重複呼叫函式更加簡潔地撰寫程式碼,避免大量的複製貼上,間接提升程式的可讀性和可維護性。
下面是一些 Kotlin 使用函式的方法:
函式的定義:使用 fun
關鍵字來定義函式,並指定函式名稱、參數和返回值的類型。例如,我們可以定義一個 greet
函式,用於向指定的名字打招呼。
fun greet(name: String) {
println("Hello, $name!")
}
單一表達式函式:對於只有單一表達式的函式,可以使用簡潔的語法來縮寫函式的實現。例如,我們可以定義一個 square
函式,用於計算數字的平方。
fun square(x: Int) = x * x
高階函式 (Higher-order function):這是一種將函式作為參數傳遞給其他函式或將函式作為返回值返回的撰寫方法。例如,我們可以定義一個 calculate
函式,接受兩個數字和一個操作函式作為參數,並返回操作後的結果。
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int {
return operation(x, y)
}
fun add(x: Int, y: Int) = x + y
val result = calculate(5, 3, ::add)
遞迴函式 (Recursive function):在函式中調用自身來實現遞迴邏輯,常見於樹狀資料結構的搜尋 (謎:常見於 Leetcode)。
例(1),我們可以定義一個 factorial
函式,用於計算指定數字的階乘。
fun factorial(n: Int): Int {
return if (n == 0) 1 else n * factorial(n - 1)
}
例(2),Fibonacci 函式
fun fibonacci(n: Int): Int {
return if (n <= 1) {
n
} else {
fibonacci(n - 1) + fibonacci(n - 2)
}
}
val result = fibonacci(10)
println(result) // 輸出:55
這個函式接受一個整數 n
,並返回 Fibonacci 數列中索引為 的數字。如果 小於等於 1,則直接返回 ;否則,遞迴計算前兩個數字的總和。