Pascal Ackermann的功能被误解了

时间:2014-12-01 14:43:05

标签: pascal

function a(m, n:integer):integer
begin
if m = 0 then a := n + 1 ;
if n = 0 then 
    a := a(m-1, 1)
else
    a := a(m-1, a(m, n-1));
end;

我无法弄清楚为什么这个功能不起作用。我做了一些测试,当它到达a(0-1, a(0,1-1))时一切都崩溃了,但这意味着它来自a(0,1) ...这个a(0,1)应该与第一个if m = 0 then a := n +1;一起去但它取而代之的是else案例。

1 个答案:

答案 0 :(得分:0)

您假设第二个if仅在第一个失败时执行,但代码中没有任何内容表明应该发生的事情。