Results 1 to 7 of 7
Thread: rewriting a recursive function
- 04-19-2012, 06:10 AM #1
Senior Member
- Join Date
- Feb 2012
- Posts
- 219
- Rep Power
- 2
rewriting a recursive function
Hello, I have to rewrite a recursive function that take a number and raises it to a power. It's sounds simple, but we have to do it in Logn time using X^2n = X^n times X^n. I am having a hard time implementing this. Here is the code for the other power function that I have to modify.
I am able to follow the recursive calls for this method fine, I just don't know how to implement that weird form I was given to use. Thanks for any help.Java Code:public static double pow(double x, int n ) { if(x == 0 && n <= 0) throw new IllegalArgumentException("Wrong inputs"); else if (x == 0) return 0; else if (n == 0) return 1; else if (n > 0) return x * pow(x, n-1); else return 1/pow(x,-n); }
- 04-19-2012, 06:34 AM #2
Moderator
- Join Date
- Feb 2009
- Location
- New Zealand
- Posts
- 4,547
- Rep Power
- 11
Re: rewriting a recursive function
The idea seems to be that you keep subtracting 1 from n until it becomes small (zero or one).Java Code:else if (n > 0) return x * pow(x, n-1);
I think what you are asked to do is divide n by 2 instead of subtracting one. There is a small complication to deal with if n is odd. But even that shouldn't be too difficult since, in that case, n-1 is even.
- 04-19-2012, 02:49 PM #3
Senior Member
- Join Date
- Apr 2012
- Location
- New York State of Confusion, USA
- Posts
- 137
- Blog Entries
- 1
- Rep Power
- 0
Re: rewriting a recursive function
Here's the deal. The original algorithm will work just fine for solving x^cn where c is some constant such as -2, 3, 21, etc. It will just take longer than if you take advantage of the algebraic rule that x^cn = (x^c)^n. Note that x^cn does NOT equal x^c * x^n
The original algorithm requires (c*n)-1 passes to achieve the answer. Taking advantage of factoring the exponents will take (n-1)+(c-1) passes.
I think I have that correct upon re-reading it before posting.
- 04-19-2012, 04:27 PM #4
Senior Member
- Join Date
- Feb 2012
- Posts
- 219
- Rep Power
- 2
- 04-19-2012, 04:33 PM #5
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,406
- Blog Entries
- 7
- Rep Power
- 17
Re: rewriting a recursive function
Write down the recurrence relations for the pow operator:
1) x^0 == 1
2) x^1 == x
3) x^n == x^(n/2)*x^(n/2) if n is even
4) x^n == x*x^(n/2)*x^(n/2) if n is odd
cases 1) and 2) are the sentinel cases while case 3) and 4) describe the recursive step.
kind regards,
JosWhen people rob a bank they get a penalty; when banks rob people they get a bonus.
- 04-19-2012, 04:47 PM #6
Senior Member
- Join Date
- Feb 2012
- Posts
- 219
- Rep Power
- 2
- 04-19-2012, 05:48 PM #7
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,406
- Blog Entries
- 7
- Rep Power
- 17
Re: rewriting a recursive function
When people rob a bank they get a penalty; when banks rob people they get a bonus.
Similar Threads
-
Recursive function to iteractive function
By mikeZet in forum New To JavaReplies: 0Last Post: 03-13-2012, 01:42 AM -
Time a recursive function
By überfuzz in forum New To JavaReplies: 1Last Post: 03-25-2011, 08:27 AM -
recursive function
By jayden in forum New To JavaReplies: 11Last Post: 09-02-2010, 03:00 PM -
Help with recursive function in java
By cachi in forum Advanced JavaReplies: 2Last Post: 07-31-2007, 06:51 PM


LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks