Recursive multiplication with repeated addition

  • Thread starter Thread starter courtrigrad
  • Start date Start date
  • Tags Tags
    comp sci
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
3 replies · 2K views
courtrigrad
Messages
1,236
Reaction score
2
Hello all

If we want to write a recursive method that multiplies two positive integers using repeated additions, we know that: [tex]a\times b = a + (a\times(b-1))[/tex] Would this be correct:

Code:
// pre: a and b are positive
// post: returning the product of a and b.
public int mult(int a, int b )

a*b = a +(a * (b-1))
if( b ==1)
return(a);
else
  return mult(a + a*(b-1)))


Also if you had:

Code:
public void hello(int n )
{
   System.out.println("hello n = ",n);
   if(n > 1)
      hello(n-1);
   System.out.println("goodbye n = ", n);

How would you find the output when a 3 is passed? I got a bumch of hellos and goodbyes, but I got it wrong


Thanks :smile:
 
Physics news on Phys.org
are these right?
 
courtrigrad said:
Code:
// pre: a and b are positive
// post: returning the product of a and b.
public int mult(int a, int b )

a*b = a +(a * (b-1))

The above line is unnecessary.

courtrigrad said:
Code:
if( b ==1)
return(a);
else
  return mult(a + a*(b-1)))

Your second return line here is wrong. You're calling mult which should have two arguments...
 
courtrigrad said:
Also if you had:

Code:
public void hello(int n )
{
   System.out.println("hello n = ",n);
   if(n > 1)
      hello(n-1);
   System.out.println("goodbye n = ", n);

How would you find the output when a 3 is passed? I got a bumch of hellos and goodbyes, but I got it wrong


Thanks :smile:

I think it should be:
System.out.println("hello n="+n);

Instead of a comma you need a "+".