[AcWing]842. 排列数字(C++实现)dfs模板题
递归的难度在于理解递归是如何回退的。
1. 题目
2. 读题(需要重点注意的东西)
思路:
---------------------------------------------------dfs的思想---------------------------------------------------
dfs深度优先遍历的思想比较简单,就是一条路走到底,走到最深点处再回退一步,再看有没有路可以走,没有的话再回退一步,重复此步骤;
dfs的思想比较简单,在此不在过多的赘述,解释代码中实现dfs的递归方法,是本文的主要目的。
---------------------------------------------------递归的思想---------------------------------------------------
递归在于不断调用自己的函数,层层深入,直到遇到递归终止条件后层层回溯,其思想与dfs的思想不谋而合;因此,可以使用递归来实现dfs。
递归的进入比较容易理解,但是递归的回溯是在计算机底层执行的,我们无法看到。因此,递归究竟是如何完成的,成为了理解递归的一大难点,也是理解递归的唯一一个难点。
让我们来看一下这样一个简单的递归程序
#include<iostream>
using namespace std;
int n;
void func(int u){
if(u == 0) return;
cout