# basic recursion problem - code needs to be modified

• 08-06-2012, 08:08 AM
ash12
basic recursion problem - code needs to be modified
I need help fixing this! I just keep getting a million errors urgh --> i need to figure out how to catch the exception (that n < r) properly and continue programming because i need to hard code two more values still (also suggestions on how to do that would be great) --> the prompt is within the code

Code:

```/* The formula for computing the number of ways of choosing r different things from a set of n things is the following: C(n, r) = n! / (r! * (n-r)!) Write a recursive program (name the class that contains the main method Activity2) that executes C(n, r) three times and prints the results. Your execution should use the (n, r) pairs as follows: (2, 4), (5, 3), and (24, 12). Hard-code these values and calls to the recursive method into your program. (Do not prompt the user to enter them.) Note that you will need to devise and program a recursive method that calculates the factorial of a value. In the event any of the pairs perform a calculation that throws any exception, catch the exception, print a suitable informative message and continue processing. */   import java.math.BigInteger;   public class Activity2 {   public static void main(String[] args) {   try { int n=2; int r=4; System.out.print("C("+n+","+r+"): "); int fn=factorial(n); int fr=factorial(r); int fnr=factorial(n-r);  int ncr=fn/(fr*fnr); System.out.println(ncr); } catch (Exception e) {} } static int factorial(int n){         if (n==0)                 return 1;         else                 return(n*factorial(n-1)); }   }```
• 08-07-2012, 07:21 PM
.paul.
Re: basic recursion problem - code needs to be modified
your first problem... to solve the negative factorial errors:

Code:

```static int factorial(int n){     if (n<=0){         return 1;         }     else{         return(n*factorial(n-1));         } }```
the other errors you will encounter are because the int variables you are using are insufficient to hold such large numbers.

to hard code several input numbers, instead of int variables use int[] arrays:

Code:

```int[] n = {2,5,24}; int[] r = {4,3,12};```
+ a for loop 0 to 2, placing the reused parts of the code within the loop