C程序设计语言之递归倒置字符串
2013-04-24 15:15
239 查看
一、自我实现版本
#include <stdio.h>
void reverse(char* s,int len)
{
if(len == 2 || len == 3) {
char tmp;
tmp = s[0];
s[0] = s[len - 1];
s[len - 1] = tmp;
}
else {
int split = len / 2;
char tmp;
char* s1 = s;
char* s2 = s + split;
reverse(s1,split);
reverse(s2,len - split);
for(int i = 0; i < split; i++) {
tmp = s[0];
for(int j = 0; j < len - 1; j++)
s[j] = s[j + 1];
s[len - 1] = tmp;
}
}
}
int main()
{
char string[10] = "abcdef";
int count = 0;
while(string[++count] != '\0');
reverse(string,count);
printf("%s\n",string);
return 0;
}
二、倒置输出版本
void reverse(char *s)
{
if(*s)
reverse(s+1);
else
return;
cout<< *s;
}
三、首尾逐渐递归版本
void recur(char *c,int k){
char tmp;
if(k>1){
recur(c+1,k-2);
tmp=c[0];
c[0]=c[k-1];
c[k-1]=tmp;
}
}
int main()
{
char *c="abcdefg";
int k=strlen(c);
recur(c,k);
puts(c);
getch();
}
#include <stdio.h>
void reverse(char* s,int len)
{
if(len == 2 || len == 3) {
char tmp;
tmp = s[0];
s[0] = s[len - 1];
s[len - 1] = tmp;
}
else {
int split = len / 2;
char tmp;
char* s1 = s;
char* s2 = s + split;
reverse(s1,split);
reverse(s2,len - split);
for(int i = 0; i < split; i++) {
tmp = s[0];
for(int j = 0; j < len - 1; j++)
s[j] = s[j + 1];
s[len - 1] = tmp;
}
}
}
int main()
{
char string[10] = "abcdef";
int count = 0;
while(string[++count] != '\0');
reverse(string,count);
printf("%s\n",string);
return 0;
}
二、倒置输出版本
void reverse(char *s)
{
if(*s)
reverse(s+1);
else
return;
cout<< *s;
}
三、首尾逐渐递归版本
void recur(char *c,int k){
char tmp;
if(k>1){
recur(c+1,k-2);
tmp=c[0];
c[0]=c[k-1];
c[k-1]=tmp;
}
}
int main()
{
char *c="abcdefg";
int k=strlen(c);
recur(c,k);
puts(c);
getch();
}
相关文章推荐
- c程序设计语言_习题1-16_自己编写getline()函数,接收整行字符串,并完整输出
- C_PlusPlus学习笔记 - 5_数组、指针和字符串 (C++语言程序设计【第三版】 郑莉等,清华大学出版社)
- 《C语言及程序设计》程序阅读——字符串数组
- 山东省第七届ACM大学生程序设计竞赛 字符串倒置
- C语言经典算法(六)——递归实现字符串长度的两种方法
- 第四周《C语言及程序设计》实践项目37 操作字符串数组
- Java 语言程序设计 变化不同颜色和大小的字符串
- C++程序设计语言练习5.12 对比string和C字符串的优劣
- Java语言程序设计-基础篇(五)字符串
- Java语言程序设计基础(5)【字符串】
- Java 语言程序设计 变化不同颜色和大小的字符串
- Java 语言程序设计 变化不同颜色和大小的字符串
- 练习 4-13 编写一个递归版本的 reverse(s)函数,以将字符串 s 倒置
- 字符串String类的完整实现 C++程序设计语言第11章
- 【JAVA语言程序设计基础篇】--图形--使用FontMetrics类居中显示字符串
- 用递归实现字符串倒置
- Java语言程序设计-进阶篇(一)递归
- C语言程序设计技巧之字符串长度
- C 语言程序设计实践 8.1 字符串
- 练习2-3:十六进制数字字符串转换为等价整型值,字符串允许包含的数字包括:0~9、a~f、A~F、x、X(C程序设计语言 第2版)