U*********y 发帖数: 54 | 1 写recursive的程序时, 经常会需要建某个variable或data structure,然后多次用到它
并需要它maintain value between calls. 一般有两种方法可以选择, 一种可以在
recursive的函数里declare它static; 另一种是在函数的wrapper里declare它然后pass by
reference.
一直想知道哪种方法更好,大家有没有什么见解? |
l*********8 发帖数: 4642 | 2 pass by reference 好吧
static local variables 看起来不好理解 |
S*******w 发帖数: 24236 | 3 static?
pass by
【在 U*********y 的大作中提到】 : 写recursive的程序时, 经常会需要建某个variable或data structure,然后多次用到它 : 并需要它maintain value between calls. 一般有两种方法可以选择, 一种可以在 : recursive的函数里declare它static; 另一种是在函数的wrapper里declare它然后pass by : reference. : 一直想知道哪种方法更好,大家有没有什么见解?
|
U*********y 发帖数: 54 | 4 有可能,不过如果pass很多reference的话,函数的参数会太多,也会变得不大好理解吧
还有没有其他方面的考量?
【在 l*********8 的大作中提到】 : pass by reference 好吧 : static local variables 看起来不好理解
|
l*********8 发帖数: 4642 | 5 pass 三四个reference应该不乱。 如果函数的参数实在太多,可以把多个参数合到一
个结构体或者类里面
【在 U*********y 的大作中提到】 : 有可能,不过如果pass很多reference的话,函数的参数会太多,也会变得不大好理解吧 : 还有没有其他方面的考量?
|
a********m 发帖数: 15480 | 6 如果是static,下次重新调用同一个计算的时候怎么办?还要弄一个 bool first_time
的变量? |
a********m 发帖数: 15480 | 7 还有static也只在单分支递归能用。有两个以上分支就没戏了。参数比static好用而且
清楚多了。 |
U*********y 发帖数: 54 | 8 同意这个, static local variable可能不好还原成初始状态.
time
【在 a********m 的大作中提到】 : 如果是static,下次重新调用同一个计算的时候怎么办?还要弄一个 bool first_time : 的变量?
|
U*********y 发帖数: 54 | 9 为什么多分枝递归不行,如果是单线程的话
【在 a********m 的大作中提到】 : 还有static也只在单分支递归能用。有两个以上分支就没戏了。参数比static好用而且 : 清楚多了。
|
a********m 发帖数: 15480 | 10 很简单的一个代码,计算一个二茶树的高度,不用参数用static试试看。
【在 U*********y 的大作中提到】 : 为什么多分枝递归不行,如果是单线程的话
|