注册 登录
编程论坛 C++教室

递归深度

mfkblue 发布于 2009-08-15 18:34, 668 次点击
例题代码如下,书上说void Perm(T list[],int k,int m)这个函数的递归深度为m-1, 按这道题m进来时是2,递归深度变成1了是怎么回事,我计算了就是m=2,Perm这个函数也调用了10次.除了形参k限制递归次数以外,里面的for循环也增加了递归的次数。
这个递归深度应该怎样理解?,不是函数的调用次数吗?


#include <iostream>
using namespace std;
template<class T>
void Perm(T list[],int k,int m)
{
    int i;
    if(k==m)
    {
        
        for(i=0;i<=m;i++)
            cout<<list[i];
        cout<<endl;
    }
    else
        for(i=k;i<=m;i++)
        {
            
            swap(list[k],list[i]);
            Perm(list,k+1,m);
            swap(list[k],list[i]);
        }
}


int main()
{
    char a[]="abc";
    Perm(a,0,2);
    return 0;
}
2 回复
#2
leeco2009-08-15 21:49
就是把递归一棵树的时候树的深度

#3
mfkblue2009-08-17 21:46
是不是应该理解成如果递归条件是n<0时结束,就认为该函数的递归深度为n-1,无论中间调用了多少这个函数。

[ 本帖最后由 mfkblue 于 2009-8-17 21:47 编辑 ]
1