| ! { dg-do run } |
| ! { dg-options "-fcheck=recursion" } |
| ! |
| ! PR fortran/39577 |
| ! |
| ! Recursive but valid program |
| ! Contributed by Dominique Dhumieres |
| ! |
| recursive function fac(i) result (res) |
| integer :: i, j, k, res |
| k = 1 |
| goto 100 |
| entry bifac(i,j) result (res) |
| k = j |
| 100 continue |
| if (i < k) then |
| res = 1 |
| else |
| res = i * bifac(i-k,k) |
| end if |
| end function |
| |
| program test |
| interface |
| recursive function fac(n) result (res) |
| integer :: res |
| integer :: n |
| end function fac |
| recursive function bifac(m,n) result (res) |
| integer :: m, n, res |
| end function bifac |
| end interface |
| |
| print *, fac(5) |
| print *, bifac(5,2) |
| print*, fac(6) |
| print *, bifac(6,2) |
| print*, fac(0) |
| print *, bifac(1,2) |
| end program test |