标题:递归深度
取消只看楼主
mfkblue
Rank: 5Rank: 5
等 级:职业侠客
帖 子:472
专家分:343
注 册:2008-12-21
结帖率:96.25%
已结贴  问题点数:20 回复次数:1 
递归深度
例题代码如下,书上说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;
}
搜索更多相关主题的帖子: 递归深度 
2009-08-15 18:34
mfkblue
Rank: 5Rank: 5
等 级:职业侠客
帖 子:472
专家分:343
注 册:2008-12-21
得分:0 
是不是应该理解成如果递归条件是n<0时结束,就认为该函数的递归深度为n-1,无论中间调用了多少这个函数。

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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-282832-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.104597 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved