import java.util.ArrayList;

//  Names:
//
//  Date: April 13, 2010
//

public class SumItUp {

	ArrayList <Integer> myValues;
	/**
	 * @param args
	 */
	
	public SumItUp()
	{
		myValues = new ArrayList<Integer>();
		myValues.add(10);
		myValues.add(5);
		myValues.add(3);
		myValues.add(7);
		myValues.add(9);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		SumItUp x = new SumItUp();
		
		// Different ways to sum up
		System.out.println("Result of SumAll is: " + x.SumAll());
		System.out.println("Result of SumAll is: " + x.SumAll2());
	//	System.out.println("Result of SumAll is: " + x.SumAll3(0));
		System.out.println("Result of SumAll is: " + x.SumAll4(0)); 
		x.RecursivePrintAll(0);
		System.out.println("Now in Reverse");
		x.RecursivePrintAllInReverse(0);
	}
	
	public int SumAll()
	{
		int sum = 0;
		for (Integer current : myValues)
		{
			sum += current;
		}
		return sum;
	}
	
	public int SumAll2()
	{
		int sum = 0;
		for (int k=0; k < myValues.size(); k++)
		{
			sum += myValues.get(k);
		}
		return sum;
	}
	
	public int SumAll3(int k)
	{
		return myValues.get(k) + SumAll3(k+1); 
	}
	
	public int SumAll4(int k)
	{
		int sum = 0;
		
		if (k < myValues.size()-1)
		{ 
			sum = myValues.get(k) + SumAll4(k+1);
		}
		else if (k == myValues.size() -1) // last item in the array
		{
			sum = myValues.get(k);
		}
		return sum;
	}
	
	public void RecursivePrintAll(int k)
	{
		System.out.println(myValues.get(k));
		if (k < myValues.size()-1)
		{
			RecursivePrintAll(k+1);
		}
	}
	
	public void RecursivePrintAllInReverse(int k)
	{
		// TODO: 
	}
}
