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);
}
}
Bài liên quan
Google đc ‘3’
stackoverflow.com
How to handle StackOverflowError in Java?
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
Breaking out of a recursion in java
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é )
Cảm ơn msmks94 nhé, đúng cái mình cần rồi.