C语言递归实现字符串长度的解法疑问及C++代码通过MPL的原因
MPL平台递归函数题相关疑问
背景情况
- 正在配合C语言教程使用MyProgrammingLab(简称MPL)平台学习编程,日常遇到的题目要求往往超出教材覆盖范围,本次碰到的递归函数类题目难度尤为突出,无法独立完成作答。
- 题目要求:编写返回
int类型的递归函数len,接收字符串参数,返回字符串的总字符数,递归判定规则明确为:- 若传入为空串(
""),则返回长度为0 - 若传入非空串,返回值为1,加上除去首字符后剩余字符串的长度
- 若传入为空串(
- 从C论坛找到一段参考代码,该代码在要求提交C语言代码的MPL平台可正常通过验证。和平台以往的校验逻辑不同,之前只要提交带C语法的内容,平台都会提示“当前为C语言课程而非C++课程”并判定答案错误,本次没有触发该报错。
- 可通过的参考代码内容:
int len(string s){ if (s.length()==0){ return 0; }else{ return 1+(len(s.erase(0,1))); } }
待解答问题
- 是否存在符合题目要求的C语言原生语法实现解法?
- 这段本质属于C++语法的代码,为什么能在C语言课程对应的MPL验证流程中正常通过?
内容的提问来源于stack exchange,提问作者Bob Hupcher
相关产品推荐
相关产品推荐

