一、介紹
遞歸兩個(gè)基本要素:
1.邊界條件(遞歸出口)
確定遞歸何時(shí)終止
2.遞歸模式(遞歸體)
大問題如何分解為小問題
二、遞歸實(shí)現(xiàn)字符串全排列
1.二話不說先上代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void swap(char *str,int i,int j){
char c;
c = str[i];
str[i] = str[j];
str[j] = c;
}
void pernutation(char *str,int start,int end){
if(start<end){//end condition
if(start+1 == end){ //每次
printf("打印全排列:%s\n",str);
return;
}else{
int i;
for(i=start;i<end;i++){
swap(str,start,i);//交換
printf("之前:%s,start:%d,i:%d\n",str,start,i);
pernutation(str,start+1,end);
swap(str,start,i);//回到之前的狀態(tài)
printf("之后:%s,start:%d,i:%d\n",str);
printf("循環(huán):%d\n",i);
}
}
}else{
printf("字符串長度不夠!");
}
}
//主函數(shù)入口
int main()
{
char s[]="123"; //定義的字符串
pernutation(s,0,strlen(s));//調(diào)用遞歸函數(shù)
return 0;
}
2.運(yùn)行結(jié)果

遞歸展示結(jié)果.png
三、分析
可見和棧是一樣一樣的。
四、總結(jié)
你現(xiàn)在所遭受的災(zāi)禍,都是你過去某個(gè)時(shí)間段慵懶所造成的。