1! { dg-do run } 2! { dg-options "-fcheck=recursion" } 3! 4! PR fortran/39577 5! 6! Recursive but valid program 7! Contributed by Dominique Dhumieres 8! 9recursive function fac(i) result (res) 10 integer :: i, j, k, res 11 k = 1 12 goto 100 13entry bifac(i,j) result (res) 14 k = j 15100 continue 16 if (i < k) then 17 res = 1 18 else 19 res = i * bifac(i-k,k) 20 end if 21end function 22 23program test 24interface 25 recursive function fac(n) result (res) 26 integer :: res 27 integer :: n 28 end function fac 29 recursive function bifac(m,n) result (res) 30 integer :: m, n, res 31 end function bifac 32end interface 33 34 print *, fac(5) 35 print *, bifac(5,2) 36 print*, fac(6) 37 print *, bifac(6,2) 38 print*, fac(0) 39 print *, bifac(1,2) 40end program test 41