C语言递归的应用之回文字符
2015-01-25 18:06
1331 查看
递归应用之回文字符的判别:
有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。
输入:
字符串
输出:
Yes或者No
说明:
如输出Yes,说明输入的字符串是一个回文字符串
输出No,说明输入的字符串不是一个回文字符串
请使用递归算法实现。
代码如下:
#include<stdio.h>
#include<string.h>
int huiwen(char str[],int a,int b )
{
if(str[a]!=str[b]) {
return 0;
}
else if(a==b||(a+1==b&&str[a+1]==str[b])) {
return 1;
}
else if(str[a]==str[b]) {
return huiwen(str,a+1,b-1);
}
}
int main()
{
char str[800];
int t,p;
gets(str);
t=strlen(str);
if(t==0)
printf("Yes\n");
else {
p=huiwen(str,0,t-1);
if(p==1)
printf("Yes\n");
else if(p==0)
printf("No\n");
}
return 0;
}
递归算法首先要明确算法的结束标志,在这个代码中,如果是回文数,结束标志是(a==b||(a+1==b&&str[a+1]==str[b])),就是当判断到了最后一组数了,应当结束,通常递归中使用if语句来作为判断语句。
特别的,在这个算法中,不断传的是数组,变换的是下标,也可以直接直接变换数组,return huiwen(str++,a,b,),此时实参直接从str1开始传给形参。
有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。
输入:
字符串
输出:
Yes或者No
说明:
如输出Yes,说明输入的字符串是一个回文字符串
输出No,说明输入的字符串不是一个回文字符串
请使用递归算法实现。
代码如下:
#include<stdio.h>
#include<string.h>
int huiwen(char str[],int a,int b )
{
if(str[a]!=str[b]) {
return 0;
}
else if(a==b||(a+1==b&&str[a+1]==str[b])) {
return 1;
}
else if(str[a]==str[b]) {
return huiwen(str,a+1,b-1);
}
}
int main()
{
char str[800];
int t,p;
gets(str);
t=strlen(str);
if(t==0)
printf("Yes\n");
else {
p=huiwen(str,0,t-1);
if(p==1)
printf("Yes\n");
else if(p==0)
printf("No\n");
}
return 0;
}
递归算法首先要明确算法的结束标志,在这个代码中,如果是回文数,结束标志是(a==b||(a+1==b&&str[a+1]==str[b])),就是当判断到了最后一组数了,应当结束,通常递归中使用if语句来作为判断语句。
特别的,在这个算法中,不断传的是数组,变换的是下标,也可以直接直接变换数组,return huiwen(str++,a,b,),此时实参直接从str1开始传给形参。
相关文章推荐
- 递归---回文字符
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
- 兔子生娃问题---函数递归应用--c语言实现
- 二叉树的创建、前序中序后序递归遍历与非递归遍历、层序遍历以及二叉树简单应用的C语言实现
- 回文字符用递归的解法
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
- 栈的应用_回文字符的判定
- C语言数据结构----递归的应用(八皇后问题的具体流程)
- 【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。
- 【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 兔子生娃问题---函数递归应用--c语言实现
- 巩固C语言(七)----递归的深度学习及应用 & 字符串和整数之间的相互转化
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
- 【学习ios之路:C语言】函数及递归的简单应用
- 【leetcode】对撞指针应用之回文字符串判断(忽略大小写,以及出数字外其他字符)
- 05:统计单词数 [C语言字符数组的应用]
- C语言:编写reverse_string(char * string)(递归实现)函数,将参数字符串中的字符反向排列
- C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列
- C语言数据结构----递归的应用(八皇后问题的具体流程)
- 递归的应用——输入一个整型值(无符号),把它转换成字符并打印它,前导0被删除