public static String cartesianProduct(final String[][] inputs) {
if (inputs == null) {
return null;
}
final StringBuilder sb = new StringBuilder();
product("", 0, inputs, sb);
return sb.toString();
}
public void product(String prefix,int index, String[][] input,StringBuilder sb){
for (int i = 0; i < input[index].length; i++) {
if (index >= input.length - 1) {
sb.append(prefix + input[index][i]);
} else {
product(prefix + input[index][i], index + 1, input, sb);
}
if (i < input[index].length - 1) {
sb.append(", ");
}
}
}
兩個(gè)變量關(guān)鍵prefix和index莺禁,作為遞歸方法的參數(shù)時(shí)進(jìn)行變化prefix + input[index][i]
和index+1
鸽扁。
從數(shù)列角度看,sb(j) = sb(j-1) + charAt(i) ,charAt(i)需要一個(gè)for循環(huán)即for (int i = 0; i < input[index].length; i++)
券时。sb(j-1)為prefix
多糠,下一步需要prefix + input[index][i]
;其中j-1
為index
,進(jìn)入下一步需要index+1
壤圃。
實(shí)現(xiàn)遞歸較容易的方式是先得到數(shù)列的通項(xiàng)公式陵霉。