我一直在阅读一些关于编程语言的文章,看到在Fortran 90之前是不允许递归的。那么如何避免间接递归呢?
我知道在函数本身体内进行直接递归可以轻松检测,但是在一般情况下这个问题似乎更加棘手。
我一直在阅读一些关于编程语言的文章,看到在Fortran 90之前是不允许递归的。那么如何避免间接递归呢?
我知道在函数本身体内进行直接递归可以轻松检测,但是在一般情况下这个问题似乎更加棘手。
这意味着程序员需要遵守这种限制以确保递归不会发生,并且编译器可以假设满足此条件。1 Fortran 90允许递归,并从那时起一直到Fortran 2008,要想潜在地使用递归的子程序必须具有子程序不能直接或间接地引用自身。
recursive
前缀。即使现在,编译器也不需要验证这一点。如果由子程序直接或间接调用任何过程,则NON_RECURSIVE prefix-spec不得出现。
1答案中关于违规检测的讨论并不真正适用于Fortran 77。那时,编译器可以更加相信程序员提供正确的程序。