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) = 1F(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 *-------------------------------------------------------------------------*
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.