PROGRAM main INTEGER,ALLOCATABLE:: sqmx(:,:)= 0 INTEGER:: l, m, n, i, sum = 0 PRINT'("正方行列の行数は? ",\)'; READ*, l ALLOCATE( sqmx(1:l, 1:l) ) DO i = 1, l DO m = 1, l PRINT'(A,I2,A,I2,A, \)',"第", i, "行", m,"列の要素は? " READ*, sqmx(i,m) ENDDO ENDDO PRINT*, det(sqmx) CONTAINS RECURSIVE FUNCTION det(sqmx) RESULT(res) INTEGER,INTENT(IN)::sqmx(:,:) INTEGER:: res, wk(SIZE(sqmx,1)-1, SIZE(sqmx,1)-1) n = SIZE(sqmx,1); res = 0 IF(n == 1) THEN res = sqmx(1,1) ELSE DO i = 1, n wk(:,1:i-1) = sqmx(2:,1:i-1) wk(:,i:n-1) = sqmx(2:,i+1:n) res = res + sqmx(1,i)*det(wk)*(-1)**(i-1) ENDDO ENDIF ENDFUNCTION det END 「再起呼び出しをもちいてn×nの正方行列をもとめよ」 以前ヒントをいただき、うえのようなプログラムをつくったのですが、未だにうまく動かず 生き恥をさらしています。どこに問題があるのでしょうか?教えてください。1×1、2×2は うまくいくのですが3×3でうまくいかないのです。