30/09/2018, 17:14

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.

//  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);
        }
}
*grab popcorn* viết 19:26 ngày 30/09/2018

Google đc ‘3’

stackoverflow.com
Silent Warrior

How to handle StackOverflowError in Java?

java, exception, java-ee, stack-overflow
asked by Silent Warrior on 04:24PM - 04 Jun 09

Nguyễn Đức Minh viết 19:22 ngày 30/09/2018

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?

stackoverflow.com
Stasis

Breaking out of a recursion in java

java, recursion
asked by Stasis on 04:55AM - 13 May 09

Ninh Lê viết 19:30 ngày 30/09/2018

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 , 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é )

Ninh Lê viết 19:21 ngày 30/09/2018

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

Bài liên quan
0