请问 Delphi对尾递归进行优化吗?是从哪个版本开始的?或用什么编译指示字?
如题。
为了测试Delphi能否把尾递归优化为循环,用了以下函数。结果当调用
TailRecursion(1000000, 1)时就发生栈溢出。我用的是Delphi 2007.
我想知道在Delphi后续版本中有没有对尾递归进行过优化,就像Erlang一样。
function TailRecursion(n: DWORD; sum: DWORD): DWORD;
begin
if n = 0 then
result := sum
else
result := TailRecursion(n -1, sum + 1);
end;
[解决办法]
太大了。。而且递归无论是时间还是空间都是很大的。。
[解决办法]
XE中也没有优化,即使使用inline指示也没有,连call都没消除掉啊。