Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Fibonacci Number (FunctionSubprogram) The Italian mathematicianLeonardo Fibonacc

ID: 3613122 • Letter: F

Question

Fibonacci Number (FunctionSubprogram) The Italian mathematicianLeonardo Fibonacci discovered a sequence of numbers, now called theFibonacci sequence. It is definedby: F(1) = 1
F(2) = 1 F(n) = F(n-1) +F(n-2)   where n > 2 Note that the ratio reaches avalues of 1.6180.
Provided below is the program using "Function Subprogram"Write a Fibonacci Number program in FORTRANusing “SubroutineSubprogram”.

*-------------------------------------------------------------------------*
       PROGRAM FIBONACCI
*     THIS PROGRAMUSES FUNCTION FIB TO
*     CALCULATE AS MANY TERMS OF THESEQUENCE
*     AS REQUIRED BY THE MAINPROGRAM
       INTEGERK, MAX, ANSWER, FIB, FIBON
       REAL RATIO
       MAX = 15
       PRINT 10
10   FORMAT(4X, 'FIBONACCI SEQUENCE, FROM TERM 3')
       PRINT20
20   FORMAT(12X, 'SERIES', 8X, 'RATIO')
       DO K =3, MAX
       ANSWER = FIB(K)
       IF (K.EQ.3) THEN
            RATIO= 1.0
       ELSE
            RATIO= REAL(FIB(K))/REAL(FIB(K-1))
       ENDIF
       PRINT 30, ANSWER, RATIO
30   FORMAT(10X, I6, 7X, F9.4)
       ENDDO
       END PROGRAMFIBONACCI
*------------------------------------------------------------------------*
       FUNCTIONFIB(LIMIT) RESULT(FIBON)
       INTEGER LIMIT, J, FIBON, FS(100)
       FS(1) = 1
       FS(2) = 1
       DO J = 3, LIMIT
       FS(J)= FS(J-1) +FS(J-2)
       FIBON = FS(J)
       ENDDO
       RETURN
       END FUNCTIONFIB
*-------------------------------------------------------------------------* Fibonacci Number (FunctionSubprogram) The Italian mathematicianLeonardo Fibonacci discovered a sequence of numbers, now called theFibonacci sequence. It is definedby: F(1) = 1
F(2) = 1 F(n) = F(n-1) +F(n-2)   where n > 2 Note that the ratio reaches avalues of 1.6180.
Provided below is the program using "Function Subprogram"Write a Fibonacci Number program in FORTRANusing “SubroutineSubprogram”.

*-------------------------------------------------------------------------*
       PROGRAM FIBONACCI
*     THIS PROGRAMUSES FUNCTION FIB TO
*     CALCULATE AS MANY TERMS OF THESEQUENCE
*     AS REQUIRED BY THE MAINPROGRAM
       INTEGERK, MAX, ANSWER, FIB, FIBON
       REAL RATIO
       MAX = 15
       PRINT 10
10   FORMAT(4X, 'FIBONACCI SEQUENCE, FROM TERM 3')
       PRINT20
20   FORMAT(12X, 'SERIES', 8X, 'RATIO')
       DO K =3, MAX
       ANSWER = FIB(K)
       IF (K.EQ.3) THEN
            RATIO= 1.0
       ELSE
            RATIO= REAL(FIB(K))/REAL(FIB(K-1))
       ENDIF
       PRINT 30, ANSWER, RATIO
30   FORMAT(10X, I6, 7X, F9.4)
       ENDDO
       END PROGRAMFIBONACCI
*------------------------------------------------------------------------*
       FUNCTIONFIB(LIMIT) RESULT(FIBON)
       INTEGER LIMIT, J, FIBON, FS(100)
       FS(1) = 1
       FS(2) = 1
       DO J = 3, LIMIT
       FS(J)= FS(J-1) +FS(J-2)
       FIBON = FS(J)
       ENDDO
       RETURN
       END FUNCTIONFIB
*-------------------------------------------------------------------------*

Explanation / Answer

please rate -thanks unfortunately I don't know how to link a main and subroutine withthe compiler I have, but these compile cleanly and should work   again they are ftn 77 *-------------------------------------------------------------------------*        PROGRAM FIBONACCI *     THIS PROGRAM USES FUNCTION FIB TO *     CALCULATE AS MANY TERMS OF THESEQUENCE *     AS REQUIRED BY THE MAIN PROGRAM        INTEGER K, MAX, FIB,FIBON,FIBK,FIBKM1,ANSWER        REAL RATIO        MAX = 15        PRINT 10 10   FORMAT(4X, 'FIBONACCI SEQUENCE, FROM TERM3')        PRINT 20 20   FORMAT(12X, 'SERIES', 8X, 'RATIO')        DO K = 3, MAX         CALL FIB(K,ANSWER)          IF (K.EQ.3)THEN            RATIO = 1.0          ELSE            CALL FIB(K,FIBK)            CALL FIM(K-1,FIBKM1)            RATIO = REAL(FIBK)/REAL(FIBKM1)        END IF        PRINT 30, ANSWER, RATIO 30   FORMAT(10X, I6, 7X, F9.4)        END DO        END     SUBROUTINE FIB(LIMIT,FIBON)        INTEGER LIMIT, J, FIBON,FS(100)        FS(1) = 1        FS(2) = 1        DO J = 3, LIMIT        FS(J)= FS(J-1) + FS(J-2)        FIBON = FS(J)        END DO        RETURN        END *-------------------------------------------------------------------------*