使用递归在特定范围内的整数之和

时间:2016-12-16 13:43:25

标签: java recursion sum

解决问题的一种简单方法是使用以下方法:

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); 
}

我似乎无法找到前进的方向......

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);
}