C++ 递归算法求字符串长度:原理与实现

本文将介绍如何使用递归算法求解字符数组存放的字符串的长度。

递归模型

设字符串为 str,长度为 len。递归模型如下:

  • 基本情况 (Base Case):len 为 0,则字符个数为 0。
  • 递归情况 (Recursive Case): 否则,字符个数为 1 加上 str[1:len] 的字符个数。

递归程序

#include <iostream>
using namespace std;

int getLength(char str[], int len) {
    if (len == 0) { // 基本情况
        return 0;
    }
    else {
        return 1 + getLength(str + 1, len - 1); // 递归情况
    }
}

int main() {
    char str[] = 'Hello, world!';
    int len = sizeof(str) / sizeof(char) - 1; // 减 1 因为最后一个字符是 '\0',不算在长度中
    cout << "Length of '" << str << "' is: " << getLength(str, len) << endl;
    return 0;
}

输出

Length of 'Hello, world!' is: 13

代码解析

  • getLength(char str[], int len) 函数接收字符数组 str 和长度 len 作为参数,并返回字符串的长度。
  • len 为 0 时,函数返回 0,代表字符串为空。
  • 否则,函数返回 1 加上 getLength(str + 1, len - 1) 的值,递归调用自身,处理 str 从第二个字符开始的子字符串。
  • main 函数中,首先定义一个字符数组 str,然后计算其长度,并调用 getLength 函数获取字符串的长度,最后将结果输出。

总结

本文详细介绍了如何使用递归算法求解字符数组存放的字符串的长度,并提供了完整的 C++ 代码示例。通过学习本文,您可以更加深入地理解递归算法的原理和应用。

C++ 递归算法求字符串长度:原理与实现

原文地址: https://www.cveoy.top/t/topic/nm8y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录