解决问题的一种简单方法是使用以下方法:
public int sum(int num)
{
if(num == 1)
return 1;
else
return num + sum(num - 1);
}
当我尝试使用以下递归定义解决相同问题时,我的问题就出现了: " 1到N的总和是1到N / 2之和加上N / 2 + 1到N"的总和。
我尝试了以下但是我陷入了无限循环......
public int sum(int max, int base)
{
if(max == base)
return base;
else
return max/2 + sum(max/2 - 1, 1) + max + sum(max-1, max/2 + 1);
}
我似乎无法找到前进的方向......
答案 0 :(得分:1)
你很亲密,尝试这样的事情
@Test
public void recursive(){
int number = 20;
System.out.println(sum(0, number));
System.out.println(sum(0, number/2));
System.out.println(sum(number/2 +1, number));
Assert.assertThat(sum(0, number), is(sum(0, number/2) + sum(number/2 +1, number)));
}
private int sum(int origin, int end) {
if(origin == end)
return end;
return origin + sum(origin+1, end);
}