F0 = 0
F1 = 1
F2 = F0 + F1
...
Fn = Fn-1 +Fn-2
A genera n+1 termen ai șirului FIBONACCI înseamnă a calcula termenii 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,... , Fn-1 +Fn-2.
Știind că F46= 1.836.311.903 și cel mai mare număr întreg memorat pe 4 bytes este 2.147.483.647 iar F47 = 2.971.215.073 vectorul cu termeni generați nu trebuie să depășească 47 de termeni, subprogramul generează cel mult termenii F0, F1, F2, F3, ....F46, din șirul FIBONACCI, pentru N mai mare decât 2 și mai mic decât 47..
Subprogramul este:
SUBROUTINE FIBON(N,ISIR,IK)
IK=0
IF((N.GT.46).OR.(N.LE.2)) GO TO 20
ISIR(1)=0
ISIR(2)=1
DO 10 I=3,N
ISIR(I)=ISIR(I-1) + ISIR(I-2)
10 CONTINUE
IK=1
RETURN
END
Subprogramul returneză șirul de termeni generat și variabila de stare IK egală cu 1 dacă șirul a fost generat, respectiv, IK egal cu zero dacă numărul de termeni este incorect.
(04 ianuarie 2018)
No comments:
Post a Comment