The challenge
Write a program that finds the summation of every number from 1 to num. The number will always be a positive integer greater than 0.
For example:
summation(2) -> 3
1 + 2
summation(8) -> 36
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8
The solution in Java
public class Solution {
public static int summation(int n) {
int runningTotal = 0;
for (int i=1; i<=n; i++) runningTotal += i;
return runningTotal;
}
}
A simpler alternative is to do the following:
public class Solution {
public static int summation(int n) {
return n*(n+1)/2;
}
}
This can also be solved using recursion:
public class Solution {
public static int summation(int n) {
if (n == 1)
return 1;
return summation(n-1) + n;
}
}
Test cases to validate our code
import java.util.Random;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class SolutionTest {
@Test
public void test1() {
assertEquals(1,
Solution.summation(1));
}
@Test
public void test2() {
assertEquals(36,
Solution.summation(8));
}
}