【发布时间】:2012-03-17 16:36:36
【问题描述】:
可能我只是对什么都感到困惑,但这里是:
在很多情况下,我们有一个递归算法,当我们从一个递归移动到下一个递归时,我们需要的值会被修改。
例如minmaxmaxNoOfNodes等。
在 C++ 中,可以将各种参数作为引用传递,一切正常。
虽然在 Java 中这是行不通的,因为所有内容都是按值复制的,因此必须为参数创建一个额外的类作为持有者,以便在函数内部对其进行修改。
所以这在 C++ 中:
int findLargestSeq(Tree *p, int &min, int &max,Tree *& seqTree)
不能像在 Java 中那样“翻译”,但必须像:int findLargestSeq(Tree p, Params p)
其中Params 将封装要更新的min max 等。
我想知道这是唯一的方法吗?
对于这种算法,Java 中是否有更“干净”的方法或 标准 模式?
我在想,也许我们修改在 C++ 中作为引用传递的参数这一事实是 C 编程遗留下来的一种习惯,而在纯 OO 的 Java 中,我也坚持以这种“过程”方式思考这一点并且看不到我应该以不同的方式处理这些问题。
非常欢迎任何意见
【问题讨论】:
标签: java algorithm oop design-patterns recursion