标题:关于此程序的递归模式的疑问
取消只看楼主
萌新想学cpp
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-10-27
结帖率:0
已结贴  问题点数:20 回复次数:2 
关于此程序的递归模式的疑问
全排列,用递归实现。
想问下在一次排列结束之后(达到递归边界后,这个程序是怎样开始下一次排列的)
#include<iostream>
using namespace std;
int fun1(int n,int* A,int cur){
    if(cur==n){
        for(int i=0;i<n;i++) cout<< A[i];
    }else{
        for(int i=0;i<n;i++){
            int ok=1;
            for(int j=0;j<cur;j++){
                if(A[j]==i+1){
                    ok=0;      
                }
            }
            if(ok){
            A[cur]=i+1;
            fun1(n,A,cur+1);
        }
        }
        
    }
}                                                                              
int A[500]={0};
int main(){
    int n;
    cin>>n;
    fun1(n,A,0);
}
搜索更多相关主题的帖子: 递归 模式 排列 int for 
2018-10-27 23:27
萌新想学cpp
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-10-27
得分:0 
回复 2楼 Jonny0201
那么在执行了if之后程序就应该结束了
但这个程序会多次进入if
这怎么解释呢?
2018-10-28 16:55
萌新想学cpp
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-10-27
得分:0 
回复 4楼 Jonny0201
会的,这个程序就是算法竞赛入门经典里的标程。
但我不理解这个程序的变量cur是如何归零的。
您能帮我运行下看看吗?
2018-10-28 18:51



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




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

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