Làm sao để dừng đệ quy ngay lặp tức nếu có lỗi tràn stack (StackOverflowError) trong Java

Chào mọi người,
Mình viết một chương trình tính tố hợp dùng công thức đệ quy bằng java như bên dưới.
Cho mình hỏi, nếu đang đệ quy là xảy ra tràn stack và mình muốn dùng đệ quy ngay lặp tức thì cần làm sao ?
Em cảm ơn mọi người. :blush:

//  công thức đệ quy: C(m,n) = C(m-1,n-1) + C(m,n-1) với dk: 0<m<n c(0,n) = c(n,n) =1  
public long C(long m, long n) {
        if (n == m || m == 0) {
            return 1;
        } else {
            return C(m - 1, n - 1) + C(m, n - 1);
        }
}

Google đc ‘3’

1 Like

Cái này chuẩn hơn nè…hãy đọc kĩ từng comment (chữ nhỏ và lớn) để hiểu được bản chất của đệ quy trên vùng nhớ stack và có cần thiết không khi làm việc này ở một ngôn ngữ bậc cao?..có những hướng đi nào?..Có khả thi không?..Và hiệu suất chương trình sẽ như thế nào?

2 Likes

Cảm ơn Dragon đã trả lơid mình,
Dùng try catch thì mình biết nhé, biết được cái tên exception mà không lẽ không biết dùng try catch :sweat_smile: , nhưng quan trọng là áp dụng vào đệ quy cho hàm trên như thế nào.
Thứ 1, không thể viết như trong hàm main mà cậu gửi ví dụ, vì hàm đệ quy của mình trả về 1 giá trị nên sẽ có một số vấn đề ( nói có vẻ vô lí nhưng cậu thử viết xem sao nhé )

1 Like

Cảm ơn msmks94 nhé, đúng cái mình cần rồi. :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?