# Recursion

Danish Shaukat

Ranch Hand

Posts: 341

posted 13 years ago

Hi all !

This program calculates the power of a number using recursion.

if i set the initial value of ans(the local variable in the method power)

other than 1 , things get messed up why???

One other thing.

I'm using the following stmt

ans=base1*power(base1,power1-1);

But even if i use

ans*=base1*power(base1,power1-1);

I get same answer.

But i guess the best approach is to simply return the expresion

return base1*power(base1,power1-1);

Thanks in advance

--Danish

[ November 03, 2002: Message edited by: Danish Shaukat ]

[ November 03, 2002: Message edited by: Danish Shaukat ]

[ November 03, 2002: Message edited by: Danish Shaukat ]

This program calculates the power of a number using recursion.

if i set the initial value of ans(the local variable in the method power)

other than 1 , things get messed up why???

One other thing.

I'm using the following stmt

ans=base1*power(base1,power1-1);

But even if i use

ans*=base1*power(base1,power1-1);

I get same answer.

But i guess the best approach is to simply return the expresion

return base1*power(base1,power1-1);

Thanks in advance

--Danish

[ November 03, 2002: Message edited by: Danish Shaukat ]

[ November 03, 2002: Message edited by: Danish Shaukat ]

[ November 03, 2002: Message edited by: Danish Shaukat ]

Anonymous

Ranch Hand

Posts: 18944

posted 13 years ago

Recursion can be a powerful tool if left in the hands of someone who understands Machiavellistic principles: divide and conquer. If we apply these nice little principles to your nice little problem, we might notice the following:

the problem is: find pow(x, y) where both x and y are integral numbers. The following simple statements are considered to be true:

- if y < 0 we consider the answer to be 0

- else if y == 0 we consider the answer to be 1

- else if y == 1 the anser will be x

- else we (ab)use some Poor Old Wanderer (pow) to do some calculations for us: z= pow(x, y/2). If y is even, pow(x, y) equals z*z, else (if y is odd), pow(x, y) equals x*z*z.

The notions above allow us to implement the pow(x, y) function:

kind regards

the problem is: find pow(x, y) where both x and y are integral numbers. The following simple statements are considered to be true:

- if y < 0 we consider the answer to be 0

- else if y == 0 we consider the answer to be 1

- else if y == 1 the anser will be x

- else we (ab)use some Poor Old Wanderer (pow) to do some calculations for us: z= pow(x, y/2). If y is even, pow(x, y) equals z*z, else (if y is odd), pow(x, y) equals x*z*z.

The notions above allow us to implement the pow(x, y) function:

kind regards

Dirk Schreckmann

Sheriff

Posts: 7023

posted 13 years ago

...and you may want to consider that 0 raised to a negative power is undefined (and so perhaps throw an ArithmeticException in that case).