首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pascal basic,需要解释

Pascal basic,需要解释
EN

Stack Overflow用户
提问于 2018-02-07 21:03:03
回答 2查看 59关注 0票数 1

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

代码语言:javascript
复制
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.

让我困惑的是这句话

代码语言:javascript
复制
else
  mengkono := mengkono(s-1) + mengkono(s-2);

从上面的代码看,它的输出是47。因为输入是6并且6大于3,所以运行上面的代码行。有人能给我解释一下它是怎么工作的吗?我还是很困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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时,只是给出一个直接的结果)

票数 1
EN

Stack Overflow用户

发布于 2018-02-07 21:06:59

这个函数是一个递归函数,也就是说,它调用自己(这一行会让你感到困惑)。每次执行这行代码时,s都会稍微变小一些,最终会小于3,这就停止了递归。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48664540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档