我有以下代码,结果是42,但是为什么呢?答案必须为13,因为@Req
。
7+6=13
答案 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