Java案例归纳之递归之记一次逻辑错误

计算1+…+n的和

public class Digui {
 int sum=0;
public static void main(String[] args) {
	System.out.println(new Digui().digui(2));
}
 int digui(int n) {
	
	if(n==1) {
		return sum=1;
	}
	if(n>1) {
	sum=n+(n-1);
	return sum+digui(n-2);
	}
	else {
	
		return sum;
	}
}
}

错误具体体现为当n为偶数时,结果会为正确结果+3,这是因为在判定条件中,当n<=0时,返回值为sum,应为0;
在n为偶数时,sum永远为3,即digui(2)返回sum+digui(0)时sum被改为3,相当于sum+3,每个偶数执行到2时都会出现这种情况,故有此错误。

你可能感兴趣的:(Java案例归纳之递归之记一次逻辑错误)