C++ 递归算法求字符串长度 - 详细解析及代码示例
C++ 递归算法求字符串长度 - 详细解析及代码示例
本文将介绍如何使用递归算法求解一个存储在字符数组中的字符串的长度。我们将首先建立递归模型,然后编写相应的 C++ 代码。
递归模型
设字符串 str 中的第一个字符为 c1,剩余部分为 s1,则整个字符串的长度可以表示为:
len(str) = 1 + len(s1)
这个公式揭示了递归的本质:字符串长度等于第一个字符的长度 (1) 加上剩余部分的长度。
递归程序
#include <iostream>
using namespace std;
int strLength(char* str) {
if (str[0] == '\0') // 递归终止条件:当遇到字符串结尾标志'\0'时,返回0
return 0;
else
return 1 + strLength(str + 1); // 递归式:字符串长度为1加上剩余部分(去掉第1个字符)的长度
}
int main() {
char str[100];
cout << "请输入字符串:";
cin >> str;
cout << "该字符串的长度为:" << strLength(str) << endl;
return 0;
}
代码解析:
strLength(char* str)函数: 该函数接受一个指向字符数组的指针作为参数,并返回字符串的长度。- 递归终止条件: 当遇到字符串结尾标志 '\0' 时,函数返回 0,表示字符串为空。
- 递归式: 否则,函数返回 1 (当前字符的长度) 加上
strLength(str + 1)(剩余部分的长度)。str + 1指向字符串中下一个字符的地址,实现了对剩余部分的递归调用。 - 主函数
main(): 从用户输入字符串,并调用strLength函数计算字符串长度,最后将结果输出到控制台。
通过这个简单的递归算法,我们成功地实现了求解字符数组存储的字符串长度的功能。
原文地址: https://www.cveoy.top/t/topic/nm72 著作权归作者所有。请勿转载和采集!