BẮT ĐẦU
CĂN BẢN
KIỂU DỮ LIỆU
CONTROL FLOW
FUNCTION
EXCEPTION
OOP
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Đệ quy trong Kotlin

Ở bài trước chúng ta đã học xong cách tạo function, vậy thì trong bài này ta sẽ vận dụng nó để học một kiến thức mới đó là tạo hàm đệ quy trong Kotlin.

Hàm được gọi là hàm đệ quy nếu nó tự gọi chính nó và quá trình này được gọi là đệ quy. Quá trình này sẽ kết thúc khi gặp một điều kiện thoát.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Như thế nào là hàm đệ quy?

Ở đây hàm myfunction() tự gọi nó, đây là hàm đệ quy.

fun myfunction(){    
  //some code  
  ....
  //myfunction() calling myfunction()
  myfunction()   
}

Cùng xem thêm ví dụ để hiểu về hàm đệ quy hơn.

2. Ví dụ về hàm đệ quy trong Kotlin

Chúng ta hãy tìm hiểu đệ quy qua ví dụ về tính giai thừa. Ở đây chúng ta định nghĩa một hàm fact() để tính giai thừa của một số mà nó truyền cho hàm này dưới dạng tham số. Trong thân hàm, chúng ta gọi hàm này một lần nữa, quá trình này được gọi là đệ quy.

Chúng ta nhập Input là một số, chương trình sử dụng Input này làm đối số cho hàm fact().

fun main(args: Array<String>) {
    print("Enter a positive integer number: ")
    val number: Int =Integer.valueOf(readLine())
    val factorial = fact(number)
    println("Factorial of $number = $factorial")
}

//recursive function
fun fact(num: Int): Int {
    return if(num == 1){
        num
    }
    else{
        //function fact() calling itself
        num*fact(num-1)
    }
}

OUTPUT:

24 Kotlin recursive function jpg

3. Đệ quy đuôi tron Kotlin

Trong đệ quy, tính toán được thực hiện sau lệnh gọi đệ quy. Ví dụ về giai thừa mà chúng ta đã thấy ở trên là một ví dụ về đệ quy hoặc đệ quy đầu. Trong đó để tính giai thừa của n chúng ta cần giai thừa của n-1.

Trong đệ quy đuôi, việc tính toán được thực hiện ngay từ đầu trước khi gọi đệ quy. Lệnh gọi hàm đệ quy xảy ra ở cuối hàm. Điều đó có nghĩa là việc tính toán được thực hiện trước và sau đó được chuyển sang lệnh gọi đệ quy tiếp theo.

Chúng ta hãy tìm hiểu rõ hơn qua ví dụ về đệ quy đuôi.

4. Ví dụ về đệ quy đuôi

Để khai báo hàm đệ quy đuôi, chúng ta sử dụng tailrec trước hàm.

fun main(args: Array<String>) {
    val number = 6
    val factorial = fact(number)
    println("Factorial of $number = $factorial")
}

tailrec fun fact(n: Int, temp: Int = 1): Int {
    return if (n == 1){
        temp
    } else {
        fact(n-1, temp*n)
    }
}

OUTPUT:

25 Tail recursion jpg

Cùng chuyên mục:

Hàm Lambda trong Kotlin

Hàm Lambda trong Kotlin

Hàm Lambda còn được gọi là hàm ẩn danh vì nó không có tên.

Tham số function trong Kotlin

Tham số function trong Kotlin

Trong bài viết này chúng ta sẽ tìm hiểu tham số mặc định và cách…

Function trong Kotlin

Function trong Kotlin

Trong bài này chúng ta sẽ học một khái niệm mới, đó là function trong…

Lệnh break trong Kotlin

Lệnh break trong Kotlin

Trong bài này chúng ta sẽ tìm hiểu lệnh break trong Kotlin

Lệnh continue trong Kotlin

Lệnh continue trong Kotlin

Trong bài này chúng ta sẽ học lệnh continue trong Kotlin,

Vòng lặp do-while trong Kotlin

Vòng lặp do-while trong Kotlin

Vòng lặp While trong Kotlin

Vòng lặp While trong Kotlin

Vòng lặp For trong Kotlin

Vòng lặp For trong Kotlin

Trong bài này chúng ta sẽ tìm hiểu về vòng lặp For

Lệnh When trong Kotlin

Lệnh When trong Kotlin

Trong bài này chúng ta sẽ học lệnh When trong Kotlin

Lệnh if .. else trong Kotlin

Lệnh if .. else trong Kotlin

Trong bất kỳ ngôn ngữ lập trình nào, chúng ta cần các câu lệnh điều…

Ranges trong Kotlin

Ranges trong Kotlin

Trong bài viết này, chúng ta sẽ tìm hiểu về tính năng rất hay của…

Mảng (Array) trong Kotlin

Mảng (Array) trong Kotlin

Trong bài này chúng ta sẽ tìm hiểu một kiểu dữ liệu rất quan trọng…

Thao tác với chuỗi trong Kotlin

Thao tác với chuỗi trong Kotlin

Trong bài này chúng ta sẽ tìm hiểu cách khai báo và xử lý chuỗi…

Ghi chú (comment) trong Kotlin

Ghi chú (comment) trong Kotlin

Toán tử Kotlin – Arithmetic, Assignment, Unary, Logical

Toán tử Kotlin – Arithmetic, Assignment, Unary, Logical

Trong bài này, ta sẽ tìm hiểu các loại toán tử có sẵn trong Kotlin…

Kotlin - Lấy dữ liệu bằng hàm readLine()

Kotlin - Lấy dữ liệu bằng hàm readLine()

Trong bài viết này, chúng ta sẽ xem cách lấy Input(đầu vào) từ người dùng(User)…

Kotlin - Type Casting - chuyển đổi kiểu dữ liệu

Kotlin - Type Casting - chuyển đổi kiểu dữ liệu

Type Casting là quá trình chuyển đổi từ loại dữ liệu sang loại dữ liệu…

Biến và Kiểu dữ liệu trong Kotlin

Biến và Kiểu dữ liệu trong Kotlin

Kotlin Keywords, Soft Keywords và Identifiers

Kotlin Keywords, Soft Keywords và Identifiers

Có một số từ nhất định trong Kotlin có ý nghĩa đặc biệt và không…

Chương trình Kotlin đầu tiên - Hello world

Chương trình Kotlin đầu tiên - Hello world

Chúng ta hãy cũng viết một chương trình Kotlin đơn giản để hiển thị thông…

Top