我正在使用遞回來解決問題。在紙上,我的答案應該有效,所以我的代碼出錯了。但是,我無法確切地確定問題出在哪里。
public class Partition {
public static void main(String[] args) {
System.out.println(part(6,4));
}
public static int part(int n, int m) {
if (n==0) {
return 1;
}
else if(m == 0 || n<0) {
return 0;
}
else {
return part(n-m, m) part(n, m);
}
}
}
uj5u.com熱心網友回復:
您只需要減少m問題即可按照您的指示回傳 9。
public static int part (int n, int m) {
if (n == 0) {
return 1;
} else if (m == 0 || n < 0) {
return 0;
} else {
return part(n - m, m--) part(n, m);
}
}
uj5u.com熱心網友回復:
我不確定您要做什么,但是如果要計算組合,它應該如下所示:
public static int part(int n, int m) {
if(m>n) { //This prevent a wrong input from the user
return part(m, n);
} else if (m==0 || m==n) { //This is your base case
return 1;
} else if(m < 0 || n<0) { //this should not happened, but you never know
return 0;
} else { //this is where you're making mistake(s)
//I don't know if I'm using the formula you are looking for
//But if not, make sure yours do not use part(n, m) otherwise it will run forever
return part(n-1, m) part(n-1, m-1);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/496075.html
上一篇:java-類屬性型別隨繼承而變化
下一篇:在另一個類中使用一個類的屬性
