Pascal基本,需要一些解释

时间:2018-02-07 13:03:03

标签: pascal

最近我开始学习pascal然后我发现了这段代码

function mengkono(s: integer):integer;
begin
  if s < 3 then
    mengkono := 3*s+1
  else
    mengkono := mengkono(s-1) + megnkono(s-2);
end;

begin
  writeln(mengkono(6));
  readln;
end.
困惑我的是这条线

else
  mengkono := mengkono(s-1) + mengkono(s-2);

从上面的代码中,它的输出是47.因为输入是6而6大于3所以上面的行是运行的。有人可以向我解释它是如何工作的吗?我还是很困惑。

2 个答案:

答案 0 :(得分:1)

该函数是一个递归函数,即它调用自身(困扰你的行)。每次执行该行时,s略小,最终会低于3,从而停止递归。

答案 1 :(得分:1)

这是一个递归函数。一个调用自身的函数。

如果输入为6,那么首先它会这样做        megnkono:= megnkono(5)+ megnkono(4)

然后你需要cgnlulate megnkono(5)和megnkono(4) 5,它会是          megnkono:= megnkono(4)+ megnkono(3) 然后你需要cgnlulate megnkono(4)和megnkono(3)

等......(输入时注意&lt; 3只是给出直接结果)