Search code examples
javarecursionfactorial

Recursive print Factorial


So I did search and read abut every factorial listing on this site but I cannot seem to figure out what is wrong with my code. Iv tried multiple different return methods but they all keep failing. Any ideas?

public class RecursivelyPrintFactorial {
    public static void printFactorial(int factCounter, int factValue) {
        int nextCounter = 0;
        int nextValue = 0;

        if (factCounter == 0) // Base case: 0! = 1
            System.out.println("1");
        }
        else if (factCounter == 1) // Base case: print 1 and result
            System.out.println(factCounter + " = " + factValue);
        }
        else { // Recursive case
            System.out.print(factCounter + " * ");
            nextCounter = factCounter - 1;
            nextValue = nextCounter * factValue;
        }

        return factValue * printFactorial(factValue - factCounter);

    }
}

    public static void main (String [] args) {
        int userVal = 0;

        userVal = 5;
        System.out.print(userVal + "! = ");
        printFactorial(userVal, userVal);

    }
}

I have a feeling I have the equation incorrect in my return but iv tried every combination I can think of. Its driving me insane. Every one reports an error. Any ideas?


Solution

  • return factValue * printFactorial(factValue - factCounter);

    I assume that you should be using the "next" values instead of these.

    Edit: Also note that the function takes two parameters and is void. Returning factValue times void doesn't make sense.