555555,老师强调过好几遍的,我又忘了:P 不过我测试了一下,调用它时输入和输出怎么一样?根本就没有变化。我是用main的: public static void main(String[] args) throws IOException { BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); System.out.println("# How many beans were you served?"); int number=Integer.parseInt(stdin.readLine()); System.out.println("# Given "+number+" beans, number of beans to eat is:"); int result=calculate(number); System.out.println(result); }
这是我的源代码: import java.io.*;public class Beans { public static void main(String[] args) throws IOException { BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); System.out.println("# How many beans were you served?"); int number=Integer.parseInt(stdin.readLine()); System.out.println("# Given "+number+" beans, number of beans to eat is:"); int result=calculate(number); System.out.println(result); } public static int calculate(int number) { int result1=0; int result2=0; int result3=0; if(number>0&&number%2==0) { result1=number-calculate(number-number/2); } if(number>10&&(number%3==0||number%4==0)) { int numberA=number%10; int numberB=(number/10)%10; result2=number-calculate(number-(numberA*numberB)); } if(number>12&&(number%5==0)) { result3=number-calculate(number-13); }
int result2 = 0;
int result3 = 0; if(number>0&&number%2==0) {
result1=number-number/2-calculate(number-number/2);
} if(number>10&&(number%3==0||number%4==0)) {
int numberA=number%10;
int numberB=(number/10)%10;
result2=number-(numberA*numberB)-calculate(number-(numberA*numberB));
} if(number>12&&(number%5==0)) {
result3=number-13-calculate(number-13);
}
else {
result1=result2=result3=number;
} return Math.min(Math.min(result1,result2),result3);
}
不过我测试了一下,调用它时输入和输出怎么一样?根本就没有变化。我是用main的:
public static void main(String[] args) throws IOException { BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("# How many beans were you served?"); int number=Integer.parseInt(stdin.readLine()); System.out.println("# Given "+number+" beans, number of beans to eat is:"); int result=calculate(number); System.out.println(result);
}
但写出来怎么就不行呢?
import java.io.*;public class Beans { public static void main(String[] args) throws IOException { BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("# How many beans were you served?"); int number=Integer.parseInt(stdin.readLine()); System.out.println("# Given "+number+" beans, number of beans to eat is:"); int result=calculate(number); System.out.println(result);
} public static int calculate(int number) { int result1=0;
int result2=0;
int result3=0; if(number>0&&number%2==0) {
result1=number-calculate(number-number/2);
} if(number>10&&(number%3==0||number%4==0)) {
int numberA=number%10;
int numberB=(number/10)%10;
result2=number-calculate(number-(numberA*numberB));
} if(number>12&&(number%5==0)) {
result3=number-calculate(number-13);
}
else {
return number;
}
return Math.min(Math.min(result1,result2),result3); }
}