Redian新闻
>
怎样记数多次递归调用种某项操作的次数?
avatar
怎样记数多次递归调用种某项操作的次数?# Programming - 葵花宝典
t*s
1
比如下面这个同时求出一个数组中最大和最小值的算法,我已算出其元素之间的比较次
数是3n/2-2,这要比分别扫描数组两次所比较次数2*(n-1)要少。
我的问题是如何让这个递归函数自己记下算出递归的次数?
我对递归函数间如何传递数据很糊涂。
vector minmax( vector V, int l, int u )
{
int m;
vector M( 2 ), M1( 2 ), M2( 2 );

if( u == l ) // one element - no comparisons needed
{
M[0] = V[l]; M[1] = V[u];
return M;
}
if( u-l == 1 ) // two elements - only one comparison
{
if( V[l] <= V[u] )
{
M[0] = V[l]; M[1] = V[u];
avatar
g*g
2
传个引用参数进去,跟使全局变量一个效果。

【在 t**********s 的大作中提到】
: 比如下面这个同时求出一个数组中最大和最小值的算法,我已算出其元素之间的比较次
: 数是3n/2-2,这要比分别扫描数组两次所比较次数2*(n-1)要少。
: 我的问题是如何让这个递归函数自己记下算出递归的次数?
: 我对递归函数间如何传递数据很糊涂。
: vector minmax( vector V, int l, int u )
: {
: int m;
: vector M( 2 ), M1( 2 ), M2( 2 );
:
: if( u == l ) // one element - no comparisons needed

avatar
t*s
3
I got it myself. Just increase the vector size to 3 with the third one
holding the number of comparison.

【在 g*****g 的大作中提到】
: 传个引用参数进去,跟使全局变量一个效果。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。