public class SubClass {
private int res = 1; public int sub(int a[], int len) {
if (len == 0) {
res = a[0];
} else {
sub(a, len - 1);
res = res * a[len - 1];
}
return res;
} public static void main(String args[]) {
int a[] = { 1, 2, 3, 8 };
System.out.println(new SubClass().sub(a, a.length)); }
}
执行结果为什么不是1 ,而是48.。谢谢大侠了。。
private int res = 1; public int sub(int a[], int len) {
if (len == 0) {
res = a[0];
} else {
sub(a, len - 1);
res = res * a[len - 1];
}
return res;
} public static void main(String args[]) {
int a[] = { 1, 2, 3, 8 };
System.out.println(new SubClass().sub(a, a.length)); }
}
执行结果为什么不是1 ,而是48.。谢谢大侠了。。
不知道为什么,请大家指点
res=1*8*3
res=1*8*3*2
private int res = 2; public int sub(int a[], int len) {
System.out.println("Number is "+len); //print len;
if (len == 0) {
res = a[0];
System.out.print("if ");
} else {
sub(a, len - 1);
System.out.print("else " + a[len - 1] + ", ");
res = res * a[len - 1];
}
System.out.println("res=" + res + ", "); //print result;
return res;
} public static void main(String args[]) {
int a[] = { 3, 5, 7, 11 };
System.out.println(new Recursion().sub(a, a.length)); //print final result }
}[code]
----------------------------------------------------------
Number is 4
Number is 3
Number is 2
Number is 1
Number is 0
if res=3,
else 3, res=9,
else 5, res=45,
else 7, res=315,
else 11, res=3465,
34653465=3*3*5*7*11