Inspectopedia Help

Tail recursion

Reports tail recursion, that is, when a method calls itself as its last action before returning.

Tail recursion can always be replaced by looping, which will be considerably faster. Some JVMs perform tail-call optimization, while others do not. Thus, tail-recursive solutions may have considerably different performance characteristics on different virtual machines.

Example:

int factorial(int val, int runningVal) { if (val == 1) { return runningVal; } else { return factorial(val - 1, runningVal * val); } }

After the quick-fix is applied:

int factorial(int val, int runningVal) { while (true) { if (val == 1) { return runningVal; } else { runningVal = runningVal * val; val = val - 1; } } }

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023