假設我有以下我的Fortran程序代碼段:非常變量
recursive function T_GreCoDi(n, m) result (GCD)
implicit none
integer, intent(in) :: n, m
integer :: GCD
select case(n)
case(0)
select case(m)
case(0)
print *, 'both of your numbers are zeros. GCD = -1'
GCD = -1
case default
GCD = m
end select
case(1)
GCD = 1
case default
select case(m)
case(0)
GCD = n
case(:n)!<--THIS IS PROBLEM
GCD = T_GreCoDi(n-m, m)
case default
GCD = T_GreCoDi(m-n, n)
end select
end select
end function T_GreCoDi
編譯時它會導致錯誤:
Error: Parameter 'n' at (1) has not been declared or is a variable, which does not reduce to a constant expression
所以我的問題:有辦法解決這個問題(我仍然想使用case-statement)?
只是通過使用if語句而不是case-statement來避免這個錯誤是很容易的,但我想用case-來完成我的代碼。
我編輯了我的問題。 – BogdanSikach