在中间中止一个递归子程序

时间:2014-08-28 19:19:20

标签: algorithm recursion ada

如果我需要在中间中止递归子程序,我该怎么办?

  1. 引发异常并将其捕获到递归子程序之外。

  2. 将一个布尔参数Exit_Right_Now添加到递归子程序中,这将使其从递归的第N级遍历到外部调用子程序。

  3. 停止使用显式递归并重写我的算法而不递归。

  4. 上述哪种变体是可行的,哪些不是?

    请注意,我正在使用Ada编程语言编写。由于Ada RM允许对异常进行一些优化,我不太确定异常是否会做正确的事情,而不是"无效"在异常提升之前的一些操作。阿达会做正确的事吗?

1 个答案:

答案 0 :(得分:2)

对Ada没有任何具体知识,显然所有方法都可以同样有效;但是,3。可能会导致实施更难以理解。为了评估1.对2.,我可能感兴趣的是,执行中止的情况是更多用例还是错误情况。如果在递归中提前终止是某些执行流程,通常是预期的",则可能会将异常视为滥用语言功能。