PROGRAM main integer stirling2; write (*,*) stirling2(4,2) END PROGRAM integer RECURSIVE FUNCTION fak ( n ) RESULT ( erg ) integer n if (n <= 1) then erg = 1 return endif erg = n * fak ( n-1 ) END FUNCTION integer RECURSIVE FUNCTION binom ( n, k ) RESULT ( erg ) integer :: n,k, ergebnis, i if ( k .EQ. 0 ) then erg = 1 return else if ( 2*k > n ) then erg = binom ( n, n-k ) return endif ergebnis = n - k + 1 do i=2, k ergebnis = ergebnis * (n - k + i) ergebnis = ergebnis / i enddo erg = ergebnis return END FUNCTION integer FUNCTION stirling2 ( n, k ) integer :: n,k; integer :: summe=0; integer :: j integer :: fak, binom do j = 0, k summe = summe + ((-1)**(k-j)) * binom ( k,j ) * (j**n) enddo stirling2 = summe / fak (k) END FUNCTION