module factorial_demo public :: factorial logical, save, public :: debug = .false. contains recursive function factorial (n) result (r) integer, intent (in) :: n integer :: r if ( debug ) then print *, "Entering factorial with n = ", n end if select case (n) case (:-1) print *, "Bad value for n ", n stop case (0, 1) r = 1 case (2:) r = n*factorial(n-1) end select if (debug) then print *, "Leaving factorial for n= ", n, ", n! = ", r end if end function factorial end module factorial_demo program try_fact use factorial_demo integer :: n, v character(len=1) :: d outer: do print *, "Enter a number" read *, n print *, "Do you want to debug?" do ! Look for Yes, No, or Quit read *, d select case (d) case ("Y", "y") debug = .true. exit case ("N", "n") debug = .false. exit case ("Q", "q") exit outer case default print *, "Enter `yes', `no' or `quit'!" end select end do v = factorial(n) print "(i5, a, i15)", n, "! = ", v end do outer end program try_fact
Back to F Example Codes Page
Back to F Homepage