[英]Java IF Statement (Algorithm efficiency improvement)
我使用了一種方法a,該方法計算可能的選擇數量,以使數字10從0到6成為數字。問題是,當x等於50或諸如此類時, 它花費的時間太多 。 我只需要一些提示,我應該做些什么來使其更快。
碼
public static int count(int x) {
if (x < 0) {
return 0;
}
if (x == 0) {
return 1;
}
int result = 0;
for (int i = 1; i <= 6; i++) {
result += count(x - i);
}
return result;
}
這是斐波那契的一種變化,只不過是最后六個值的總和。
您可以使用普通循環,該循環比記憶(第一次)更快
public static long count(int x) {
long a=0, b=0, c=0, d=0, e=0, f=1;
while(x-- > 0) {
long sum = a + b + c + d + e + f;
a = b; b = c; c = d; d = e; e = f;
f = sum;
}
return f;
}
如果您反復調用此方法,則最好將所有值都存儲在int
范圍內(首次可能小於30),然后再檢索這些值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.