Java递归基础纳闷
Java递归基础疑惑
我算的时候是:
2 * 2 + 3* 3 = 13
2 * 1 + 2 * 2 = 6
2 * 0 + 1 * 1 = 1
输出为20,但是一直输出21。.请问是如何去计算该递归程序,谢谢!
------解决思路----------------------
2*(2*(2*(2*0+0*0)+1*1)+2*2)+3*3
=2*(2*(2*0+1*1)+2*2)+3*3
=2*(2*1+2*2)+3*3
=2*6+3*3
=21
------解决思路----------------------
方法返回值是最后一次递归的返回值,而不是3次递归累加的
当x=0 f(0)=0
当x=1 f(1)=2*f(0)+1*1=1
当x=2 f(2)=2*f(1)+2*2=6
当x=3 f(3)=2*f(2)+3*3=21
------解决思路----------------------
f(3) = 2 * (f2) + 3 * 3; (d)
f(2) = 2 * f(1) + 2 * 2; (c)
f(1) = 2 * f(0) + 1 * 1; (b)
f(0) = 0; (a)
public class App {
private static int count;
public static int f(int x){
if(x == 0){
return 0;
}else{
count++;
return 2 * f(x - 1) + x * x;
}
}
public static void main(String[] args) {
System.out.println(f(3) + " c " + count);
}
}
我算的时候是:
2 * 2 + 3* 3 = 13
2 * 1 + 2 * 2 = 6
2 * 0 + 1 * 1 = 1
输出为20,但是一直输出21。.请问是如何去计算该递归程序,谢谢!
------解决思路----------------------
2*(2*(2*(2*0+0*0)+1*1)+2*2)+3*3
=2*(2*(2*0+1*1)+2*2)+3*3
=2*(2*1+2*2)+3*3
=2*6+3*3
=21
------解决思路----------------------
方法返回值是最后一次递归的返回值,而不是3次递归累加的
当x=0 f(0)=0
当x=1 f(1)=2*f(0)+1*1=1
当x=2 f(2)=2*f(1)+2*2=6
当x=3 f(3)=2*f(2)+3*3=21
------解决思路----------------------
f(3) = 2 * (f2) + 3 * 3; (d)
f(2) = 2 * f(1) + 2 * 2; (c)
f(1) = 2 * f(0) + 1 * 1; (b)
f(0) = 0; (a)