全国服务热线:400-6263-721

位置:福州趣乐码编程培训学校 > 学校动态 > C语言系列 递归思路之字符串比较

C语言系列 递归思路之字符串比较

来源:福州趣乐码编程培训学校时间:2021/12/24 17:50:01

  递归调用仅仅是被调函数恰为主调函数,每次调用的层次不同,且每次分配形参并非同一变量,特别需要注意返回的次序。

  使用递归思想比较两个字符串是否相等?

  C语言中没有字符串的数据类型,可以用字符数组或字符指针来表示字符串。系统提供了对应的库函数strcmp(字符串1,字符串2)可以实现两个字符串的大小比较。这里,我们可以自行定义函数来实现比较功能。

  01

  常规思路

  通用的普通方式就是通过循环逐一比较。代码如下:

  函数中,首先判断两个字符串长度是否相等?如果不相等,则直接返回0(假);

  然后依次循环数组里的每一个字符,如果对应位置的字符不相同,则跳出循环;

  zui后结论判断,当循环变量小于字符串长度,说明是从循环内部跳出,两个字符串必不相同,否则说明正常退出循环,返回1(真),也就是两个字符串相等。

  02

  递归思想

  这里分别实现两种不同的传参形式。

  1、一种是传入字符指针,代码如下:

  实现的思路同上(常规思路),注意观察细微区别(如何构造相似性?)

  首先,判断两个字符串是否相等?不相等则直接返回假(0);

  然后,读取字符指针第1位是否相等?不相等则直接返回假(0);【代码第9-10行】

  第三,如果第1位相同,则指针下移一位,递归调用自身;【代码第11-13行】

  第四,设置递归的出口。当指针移动到字符串的zui后一位,即长度为0时,说明已经逐一比较了每一位的字符,则表示两个字符串相等。【代码第8行】

  2、另一种也可以传入字符数组

  如果仅仅是数组名,每次递归则无法区分参数的不同。这里可以追加一个参数begin,代表要比较的当前下标。

  同样的,先判断长度是否相同?这是非常明显的区别。然后逐一比较,从第1位开始,不同则直接返回假(0);相同则递归自身,下标增加一位。

  当然,递归不能一直循环下去,必须要有一个出口,当下标增加到数组实际长度的位置时,说明已经遍历了所有的数组元素,两个字符串相等【代码第19行】。

  03

  总结

  在这个案例中,通过字符指针移动即可寻找到递归的相似性;

  而字符数组每次调用都相同,通过添加参数,构造了一种相似性,同样实现了递归调用。#c语言#

  无论常规还是递归实现,都是遍历每一位的字符,确定可能与不可能的情况。

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/1049/news/463618/违者必究! 以上就是福州趣乐码编程培训学校 小编为您整理 C语言系列 递归思路之字符串比较的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6263-721