mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-26 15:27:45 +07:00
GitOrigin-RevId: 8b2b63fc6db476ca0c2cfe5cadd84db6c4236d0f
35 lines
908 B
HTML
35 lines
908 B
HTML
<html>
|
|
<body>
|
|
Reports tail recursion, that is, when a method calls itself as its last action before returning.
|
|
<p>
|
|
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.
|
|
</p>
|
|
<p>Example:</p>
|
|
<pre><code>
|
|
int factorial(int val, int runningVal) {
|
|
if (val == 1) {
|
|
return runningVal;
|
|
} else {
|
|
return factorial(val - 1, runningVal * val);
|
|
}
|
|
}
|
|
</code></pre>
|
|
<p>After the quick-fix is applied:</p>
|
|
<pre><code>
|
|
int factorial(int val, int runningVal) {
|
|
while (true) {
|
|
if (val == 1) {
|
|
return runningVal;
|
|
} else {
|
|
runningVal = runningVal * val;
|
|
val = val - 1;
|
|
}
|
|
}
|
|
}
|
|
</code></pre>
|
|
<!-- tooltip end -->
|
|
|
|
</body>
|
|
</html> |