Tôi đã lược tả mã của mình và nhận thấy rằng chương trình của tôi đã dành khoảng 85% thời gian thực hiện chức năng đệ quy đặc biệt này. Hàm này nhằm tính toán xác suất đạt được một tập hợp các trạng thái trong một chuỗi markov, với một vị trí ban đầu (x, y).Chức năng đệ quy lấy tuổi để chạy
private static boolean condition(int n){
int i = 0;
while (n >= i){
if(n == i*4 || n == (i*4 - 1))
return true;
i++;
}
return false;
}
public static double recursiveVal(int x, int y, double A, double B){
if(x> 6 && (x- 2 >= y)){ return 1;}
if(y> 6 && (y- 2 >= x)){ return 0;}
if(x> 5 && y> 5 && x== y){ return (A*(1-B)/(1 -(A*B) - ((1-A)*(1-B))));}
if(condition(x+ y)){
return (recursiveVal(x+1, y,A,B)*A + recursiveVal(x, y+1,A,B)*(1-A));
}
else{
return (recursiveVal(x+1, y,A,B)*(1-B) + recursiveVal(x,y+1,A,B)*B);
}
}
Tôi đã từng nói rằng 99% hàm đệ quy có thể được thay thế bằng vòng lặp while. Tôi đang gặp khó khăn khi làm điều này mặc dù. Có ai biết làm thế nào tôi có thể cải thiện thời gian thực hiện hoặc viết lại này như là một vòng lặp lặp?
Cảm ơn
@org, anh ấy đã chấp nhận câu trả lời. Tôi nghĩ rằng nó có thể là một lỗi? – jjnguy
@jjnguy yeah chỉ nhận thấy rằng, có thể dịch vụ được lên lịch để cập nhật. –
@org, có thể. – jjnguy