帕斯卡的功能步骤

时间:2019-04-08 14:31:05

标签: delphi pascal freepascal

我有以下代码,结果是42,但是为什么呢?答案必须为13,因为@Req

7+6=13

2 个答案:

答案 0 :(得分:4)

您并不像声称的那样仅添加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)进行的a > 2递归调用。这就是为什么最终结果是42而不是13的原因。

答案 1 :(得分:-1)

function f(a : Integer) : Integer;
begin
   if (a=1) OR (a=2) then
    Result := 2
   else
    Result := (a-1) + (a-2);                                                        
end;

f(8)
Result = 13