pascal 中的函数步骤

克拉丽丝

我有以下代码,结果是 42,但为什么呢?答案必须是 13,因为7+6=13

program HelloWorld;

function F (a : integer) : integer;
begin
  if (a = 1) or (a = 2) then
    F := 2
  else
    F := F(a-1) + F(a-2);
end;

begin
  WriteLn(F(8));
end.
雷米勒博

您并没有7+6像您声称的那样添加如果需要,则需要更改此行:

F := F(a-1) + F(a-2);

对此:

F := (a-1) + (a-2);

否则,您实际上是在添加F(7)+F(6),即:

(F(6) + F(5)) + (F(5) + F(4))

这是:

((F(5) + F(4)) + (F(4) + F(3))) + ((F(4) + F(3)) + (F(3) + F(2)))

依此类推,每次递归调用F(a)where a > 2这就是为什么你最终得到 42 而不是 13 的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Pascal中的抽象函数

来自分类Dev

Pascal Ackermann函数被误解

来自分类Dev

在Pascal中创建课程

来自分类Dev

Pascal中的数字声明

来自分类Dev

在pascal中动态分配匿名函数

来自分类Dev

Free Pascal 中的通用嵌套类函数

来自分类Dev

Pascal:Val()函数返回负数

来自分类Dev

Free Pascal中的RawByteString类型

来自分类Dev

Pascal中的双“ else”语句

来自分类Dev

Python中的Pascal“ var parameter”

来自分类Dev

0至Pascal中的变量

来自分类Dev

在pascal中动态分配匿名泛型函数

来自分类Dev

Pascal的Triangle主要使用C ++中的函数

来自分类Dev

Pascal:如何编写不带参数的函数?

来自分类Dev

Pascal的Triangle主要使用C ++函数

来自分类Dev

从函数返回字符串(VAX PASCAL)

来自分类Dev

Pascal函数参数的可变数量

来自分类Dev

如何在Pascal中输出Set的内容?

来自分类Dev

在Pascal中更改2D指针

来自分类Dev

Pascal类使用中的SIGSEV错误

来自分类Dev

使用Pascal在NPPExec中无输出

来自分类Dev

如何在Pascal中创建QuickBlox会话

来自分类Dev

如果条件在Pascal中处于for循环中

来自分类Dev

帧中的对象-pascal运动图片

来自分类Dev

在Pascal中回溯:找到最大的加权分支

来自分类Dev

来自PASCAL中多维数组的总计

来自分类Dev

Turbo Pascal 7中的弹出窗口

来自分类Dev

Inno Setup Pascal脚本中的多行注释

来自分类Dev

在Inno Setup Pascal脚本中销毁对象