PROGRAM Fibbonacci

implicit none

Integer :: arg1 = 0, arg2 = 1
Integer :: level = 10

call CalcFib(arg1, arg2, level)

print *, 'The 10th Fib No is', arg2

END PROGRAM Fibbonacci

Recursive Subroutine CalcFib (prev1, prev2, recur)

implicit none

Integer, Intent(INOUT) :: prev1, prev2, recur
Integer :: temp

print *, 'recur = ', recur
print *, 'fib = ', prev2

if (recur <  2) then     ! done recurring, return the result
   return
else
	temp = prev2+prev1
	prev1 = prev2
	prev2 = temp
	recur = recur-1
	call CalcFib(prev1, prev2, recur)
endif

END SUBROUTINE CalcFib
