Pascal 基础,需要一些解释

Pascal basic, need some explanation

最近我刚开始学习 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,所以上面的行是 运行。有人可以向我解释它是如何工作的吗?我还是一头雾水

该函数是一个递归函数,即它调用自身(让你感到困惑的那一行)。每次执行该行时,s 都会稍微变小,最终低于 3,从而停止递归。

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

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

然后你需要计算 megnkono(5) 和 megnkono(4) 5 会是 megnkono:=megnkono(4)+megnkono(3) 那么你需要计算 megnkono(4) 和 megnkono(3)

等等...(注意当输入<3时只是给出直接结果)