递归算法在C++中是一个比较经典的算法类型,其主要特征就是循环调用,直到达到结束条件为止才结束。
一般递归算法可以分为两部分:
1.递归部分:递归调用的程序主体;
2.递归出口:递归输出条件。
常用的解决递归问题有:阶乘,汉诺塔,全排列等。
现在举例说明:
例子1:全排列问题
什么是全排列问题呢?大家买过体育彩票的应该玩过3D吧?对,给你3个随机数:1、2、3,对其进行排列组合:123、321、213。
#include <iostream>
using namespace std;
int n = 0;
void swap(char *q ,char *p)
{ //交换函数
int temp;
temp= *q;
*q = *p;
*p = temp;
}
void perm(char arr[],int k, int m )
{
int i;
if(k >m)
{
for(i = 0 ; i <= m ; i++)
{ //递归结束出口&