首页 > 解决方案 > 包装递归函数总是一个好习惯吗?

问题描述

我正在使用递归函数来计算从一个节点开始并以另一个给定的一组规则(例如:最小/最大/确切的停止数)结束的图形的可能遍历次数。

我想知道调用调用递归函数而不是直接调用它的包装函数是否是一种好习惯。大多数时候我看到人们使用包装函数。

只是想知道为什么以及利弊是什么,在什么情况下我们必须包装它?

标签: javafunctionrecursionwrapper

解决方案


不,这并不总是必要的。只有在有特定原因时才需要包装它。以下是您可能需要包装它的几个原因:

  • 如果它传递给自己的参数与它在初始调用中收到的参数不同,无论出于何种原因
    • 也许递归参数很复杂,调用者很难为它们提供适当的初始值
    • 也许初始参数与递归参数明显不同
  • 如果您需要起始位置(例如包装器)具有与递归方法本身不同的访问级别。

大概还有几个。

但是很多递归方法不需要包装。例如,带有谓词的经典深度优先节点遍历方法在递归期间与初始调用期间不需要任何特殊传递,因此无需包装它。


推荐阅读