我有一个关于尾调用优化的问题,我需要知道这个 java 代码的行为:
private void doSomething(int v) {
inf f = someCalculation(v);
if (f < 0) doSomething(v/2);
else doSomething(v*2);
}
这段代码是一个无意义的例子,但我的问题是,在这种情况下:
- 第一个 doSomething() 调用会被优化吗?
- 第二个 doSomething() 调用会被优化吗?
- if/else 块以任何方式影响优化?
谢谢
编辑:
请提供一个示例,说明如果语言不是 Java 而是其他具有 TCO 的语言,您将如何做到这一点