Pascal basic,需要一些解释吗
最近我刚开始学习pascal,然后我发现了这段代码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,所以
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);