| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1365 人关注过本帖
标题:关于此程序的递归模式的疑问
取消只看楼主 加入收藏
萌新想学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);
}
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
快速回复:关于此程序的递归模式的疑问
数据加载中...
 
   



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

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