Pascal basic,需要一些解释吗

Pascal basic,需要一些解释吗,pascal,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. 根据上面的代码,它的输出是47。因为输入是6,并且6大于3,所以

最近我刚开始学习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.

根据上面的代码,它的输出是47。因为输入是6,并且6大于3,所以上面的行被运行。有人能给我解释一下它是怎么工作的吗?我仍然感到困惑。

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

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

如果输入是6,那么首先就可以了 梅金科诺:=梅金科诺(5)+梅金科诺(4)

然后,你需要对megnkono(5)和megnkono(4)进行大笑 五个人就够了 梅金科诺:=梅金科诺(4)+梅金科诺(3) 然后,你需要对megnkono(4)和megnkono(3)进行大笑

等等。。。(注意,当输入如其他人所说是递归函数时(您可以通过谷歌了解更多信息)它调用自身。它如何停止调用自身?是什么阻止它无限递归,直到堆栈被消耗并且出现故障?这是重要的部分:需要有一个输入条件,在该条件下它将返回一个值而不调用自身。在这种情况下,该条件是当
s<3
时。
else
  mengkono := mengkono(s-1) + mengkono(s-2);