phamhoangle
19-03-2007, 12:33
Mình phải tạo 1 recursive method để in ra số thứ i từ trên xuống trong 1 Stack chứa các số nguyên. Nếu i lớn hơn số phần tử trong Stack thì method này phải throw ra 1 exception.
Yêu cầu là method này ko được làm thay đổi stack.
Giới hạn : chỉ được dùng 4 method trong class Stack :
- peek()
- pop()
- push()
- empty
Method của mình như sau :
int view(Stack<Integer> st, int i) throws EmptyStackException {
if((i == 1) && (st.empty() == false)) return st.peek();
int a = st.pop();
if(st == emtpy) {
throw new EmptyStackException("invalid index");
}
else {
int k = view(st,i-1);
}
st.push(a);
return k ;
}
Vấn đề là khi method này throw ra 1 exception (trong trường hợp i ko thỏa mãn) , no thoát ngay khỏi method và ko thực hiện st.push(a) nữa. Khi đấy st sẽ thành empty ???
Có cách nào mà sau khi throw ra exception, st vẫn được bảo toàn ko ?
Ai giải quyết giúp mình với.
Yêu cầu là method này ko được làm thay đổi stack.
Giới hạn : chỉ được dùng 4 method trong class Stack :
- peek()
- pop()
- push()
- empty
Method của mình như sau :
int view(Stack<Integer> st, int i) throws EmptyStackException {
if((i == 1) && (st.empty() == false)) return st.peek();
int a = st.pop();
if(st == emtpy) {
throw new EmptyStackException("invalid index");
}
else {
int k = view(st,i-1);
}
st.push(a);
return k ;
}
Vấn đề là khi method này throw ra 1 exception (trong trường hợp i ko thỏa mãn) , no thoát ngay khỏi method và ko thực hiện st.push(a) nữa. Khi đấy st sẽ thành empty ???
Có cách nào mà sau khi throw ra exception, st vẫn được bảo toàn ko ?
Ai giải quyết giúp mình với.