看了你的答案有启发,想自己用递归写一个,先把能不能得到这个分算出来,我想法是这个最后的分数是又前一题乘以2或者+题号得到的,所以倒着算,但是报错了,能再帮我看看嘛?报错:Exception in thread "main" java.lang.StackOverflowError
public class TextScore {
static int n = 10;
public static void main(String args[]) {
int s = 100;
f(s);
}
public static void f( int s ) {
if(s == 10 && n == 0) {
System.out.print("it can be got");
}
else if( n > 0) {
if(s % 2 ==1) {
s = s - n;
f(s);
}
else {
int a = s;
int b = s;
a = a/2;
b = b-n;
f(a);
f(b);
n--;
}
}
else System.out.println("invaild score");
}
}
public class Test6 {
public static void main(String[] args) {
int[] a = new int[10];
int[] b = new int[10];
answer(1, 10, a, b);
}
public static void answer(int i, int sum, int[] ans, int[] anse) {
if (sum == 100&&i==11) {
for (int j : ans) {
System.out.print(j + ",");
}
System.out.println();
for (int k : anse) {
System.out.print(k + ",");
}
System.out.println();
System.out.println("结束轮次为:"+(i-1));
}
if (i > 10) {
return;
}
add(i, sum, ans, anse);
sub(i, sum, ans, anse);
}
public static void add(int i, int sum, int[] ans, int[] anse) {
sum = sum * 2;
ans[i-1] = 1;
anse[i-1] = sum;
i++;
answer(i, sum, ans, anse);
}
public static void sub(int i, int sum, int[] ans, int[] anse) {
sum = sum - i;
ans[i-1] = 0;
anse[i-1] = sum;
i++;
answer(i, sum, ans, anse);
}
}