最近我刚开始学习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,所以运行上面的代码行。有人能给我解释一下它是怎么工作的吗?我还是很困惑。
发布于 2018-02-07 21:08:36
这是一个递归函数。调用自身的函数。
如果输入是6,那么首先它将执行megnkono:=megnkono(5)+megnkono(4)
然后你需要计算megnkono(5)和megnkono(4)对于5它将是megnkono:=megnkono(4)+megnkono(3)然后你需要计算megnkono(4)和megnkono(3)
以此类推。(注意,当输入小于3时,只是给出一个直接的结果)
发布于 2018-02-07 21:06:59
这个函数是一个递归函数,也就是说,它调用自己(这一行会让你感到困惑)。每次执行这行代码时,s都会稍微变小一些,最终会小于3,这就停止了递归。
https://stackoverflow.com/questions/48664540
复制相似问题