Tôi đã thực hiện mã này .. Và tôi cần để có được tốt nhất của nó .. Tôi thực sự cần hiệu suất tốt nhất của tính số lượng .. xin vui lòng giúp đỡ được ..Có cách nào tốt hơn (hiệu suất) tính toán giá trị hơn cái này không?
Tôi đã đọc một số mã của loại tính toán và tôi nghĩ rằng tôi đã là tốt nhất trong số họ ..
Avaliate này cho tôi .. plz ..
ps: và tôi thực sự cần sự BigInteger .. tôi sẽ tính toán Fibonacci số khổng lồ
ps2: Tôi đã tính toán một số lượng lớn với thuật toán này và tôi có thời gian phản hồi tuyệt vời .. nhưng tôi cần biết liệu nó có thể là tốt hơn
ps3: để chạy mã này, bạn sẽ cần phải sử dụng lập luận này VM -Xss16384k
(STACKSIZE)
public class Fibonacci {
private static BigInteger[] fibTmp = { BigInteger.valueOf(0), BigInteger.valueOf(1) };
public static BigInteger fibonacci(long v) {
BigInteger fib = BigInteger.valueOf(0);
if (v == 1) {
fib = BigInteger.valueOf(1);
} else if (v == 0) {
fib = BigInteger.valueOf(0);
} else {
BigInteger v1 = fibonacci(v - 1);
BigInteger v2 = fibTmp[(int) (v - 2)];
fib = v1.add(v2);
}
synchronized (fibTmp) {
if (fibTmp.length - 1 < v)
fibTmp = Arrays.copyOf(fibTmp, (int) (v + 10));
fibTmp[(int) v] = fib;
}
return fib;
}
}
Điều này trông giống như java. Để có màn trình diễn hay nhất, ngôn ngữ có thể quan trọng. Bạn có thể thêm thẻ ngôn ngữ không? –
không .. quên đi ngôn ngữ .. là thuật toán hiệu suất .. ngôn ngữ trong trường hợp này không quan trọng! =) – thiagoh
Như bạn thích nhưng không phải tất cả các ngôn ngữ đều liên quan đến đệ quy sâu ... –