Вы не добавляете просто 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.