class SumUp
{
private int doSumUpT(int w, int x, int y, int z, int sumSoFar) // Tail Recursion
{
int sum;
if (w > x)
{
sum = sumSoFar;
}
else
{
if( ((w % y) == 0) || ((w % z) == 0) )
{
sum = doSumUpT(w+1,x,y,z,sumSoFar+w);
}
else
{
sum = doSumUpT(w+1,x,y,z,sumSoFar);
}
}
return(sum);
}
public int sumUpT(int w,int x,int y, int z) // Wrapper
{
return( doSumUpT(w, x, y, z, 0) );
}
public int sumUpNT(int w,int x,int y, int z) // Wrapper
{
return( doSumUpNT(w, x, y, z) );
}
public int doSumUpNT(int w, int x, int y, int z)
{
int times = 0;
if (w > x)
{
}
else
{
if( ((w % y) == 0) || ((w % z) == 0) )
{
times = 1 + doSumUpNT(w + 1, x, y, z);
}
else
{
times = doSumUpNT(w + 1, x, y, z);
}
}
return times;
}
} // end class