一、介绍

递归两个基本要素:

1.边界条件(递归出口)

确定递归何时终止

2.递归模式(递归体)

大问题如何分解为小问题

二、递归实现字符串全排列

1.二话不说先上代码:

#include

#include

#include

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

if(start+1 == end){ //每次

printf("打印全排列:%s\n",str);

return;

}else{

int i;

for(i=start;i

swap(str,start,i);//交换

printf("之前:%s,start:%d,i:%d\n",str,start,i);

pernutation(str,start+1,end);

swap(str,start,i);//回到之前的状态

printf("之后:%s,start:%d,i:%d\n",str);

printf("循环:%d\n",i);

}

}

}else{

printf("字符串长度不够!");

}

}

//主函数入口

int main()

{

char s[]="123"; //定义的字符串

pernutation(s,0,strlen(s));//调用递归函数

return 0;

}

2.运行结果

递归展示结果.png

三、分析

可见和栈是一样一样的。

四、总结

你现在所遭受的灾祸,都是你过去某个时间段慵懒所造成的。

c语言字符全排列数组,使用c语言递归实现字符串的全排列相关推荐

  1. C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt

    C语言第13讲指针与字符串(字符数组).ppt 6.2.3 指针与字符串(字符数组) C语言用字符数组存放字符串. 字符数组元素个数确定,一般用下标控制循环. 字符串有效字符个数由0确定,用结束符0控 ...

  2. c语言字符结构数组初始化,C语言结构体数组初始化问题

    C语言结构体数组指定初始化器时,下面的三种方法,只有第三种可以,但是第一,二种,我看不出语法上哪错了,编译器DEVc++会报错 [Error] C99 designator 'num_insur' o ...

  3. C语言字符型PPT,《C语言字符串》PPT课件.ppt

    <<C语言字符串>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<C语言字符串>PPT课件.ppt(30页珍藏版)>请在装配图网上搜索. 1.A ...

  4. c语言字符型输入格式化,c语言之字符串和格式化输入输出

    字符串和格式化输入输出 #include #include #define DENSITY 62.4 int main(void) { float weight, volume; int size, ...

  5. c语言字符函数isalpha,总结C语言字符检测函数:isalnum、isalpha...

    前言:最近一直在刷leetcode的题,用到isalnum函数,用man手册查找了一下,总共有13个相关函数如下: #include int isalnum(int c); int isalpha(i ...

  6. c语言中二维数组怎么,c语言中什么是二维数组

    c语言中什么是二维数组 二维数组A[m][n],这是一个m行,n列的二维数组.以下是由应届毕业生小编整理关于c语言二维数组的内容,希望对大家有所帮助!更多相关内容请关注应届毕业生考试 网. c语言的二 ...

  7. C语言 指针和数组区别 - C语言零基础入门教程

    目录 一.前言 二.指针和数组区别 1.通过 sizeof 获取大小 a.计算数组大小 b.计算指针大小 2.指针和数组赋值方式不同 a.指针赋值 b.数组赋值 3.指针是指针变量,数组是指针常量 三 ...

  8. C语言 二维数组遍历 - C语言零基础入门教程

    目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...

  9. c语言 二维数组 文库,c语言二维数组练习题

    c语言二维数组练习题 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 完成下列程序代码完成下列程序代码1. 将二维数组(5 行 5 ...

最新文章

  1. 网络流最大流 Dinic算法模板
  2. Windows Server 2008 使用WDS自动部署操作系统
  3. [搜索]波特词干(Porter Streamming)提取算法详解(1)
  4. iphone计算机快捷键,苹果电脑快捷键大全,最常用的都在这里了
  5. ARM 之六 Cortex-M 内核中断/异常系统、中断优先级/嵌套 详解
  6. centos 安装mysql时错误unknown variable #39;defaults-file=/opt/redmine-2.6.0-2/mysql/my.cnf#39;...
  7. 在linux中 要删除abc目录,操作系统原理与应用(linux)A卷
  8. 安卓依然是华为手机首选,鸿蒙系统或许不用于手机
  9. SHA256算法原理详解图
  10. java中数字循环嵌套举例,在Java程序中,复杂算法可以通过循环语句和的相互嵌套来实现。...
  11. Windows7 445端口漏洞
  12. 华三路由器双向NAT
  13. springboot项目在服务器怎么启动,springboot在服务器上启动的几种方式,亲测通过!...
  14. There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘pypi.org‘,port=443)
  15. 模拟城市我是市长服务器维护多久,《模拟城市我是市长》你所走过的弯路 新手常见问题...
  16. Selenium 爬取评论数据,就是这么简单!
  17. Execl XSSFSheet 合并单元格读取
  18. MySQL 空间分析函数
  19. 【技术邻】搞热仿真离不开热电偶
  20. Linux中DNS服务器地址查询命令nslookup使用教程

热门文章

  1. AWT_事件监听2(Java)
  2. 微信小程序下载图片保存到本地
  3. vue 方法获取返回值_Vue项目中Api的组织和返回数据处理的操作
  4. Python全栈开发之Django基础
  5. Unity lightmap shader
  6. 第一个Vert.x程序
  7. 专门针对音乐发烧友开发的5款App
  8. 【编译原理笔记15】运行存储分配概述,静态存储分配,栈式存储分配,调用序列和返回序列,非局部数据的访问,符号表,符号表建立
  9. java中正则表达式截取字符串
  10. Photoshop和WPF双剑配合,打造炫酷个性的进度条控件