如何使用Kotlin编写递归函数将所有'c'字符移动到字符串末尾
问题原因
你的代码存在两个核心问题:
- 判断条件写错:要移动的目标字符是
c,现有代码判断的是字符x,逻辑完全不匹配需求 - 缺少递归终止条件:当字符串递归处理到空时,调用
s[0]会触发下标越界异常,必须补充空串直接返回的终止逻辑
修正后代码
fun toEnd(s: String): String { // 递归终止:空串直接返回 if (s.isEmpty()) return "" return if (s[0] == 'c') { // 当前字符是c,追加到递归处理结果的末尾 toEnd(s.substring(1)) + s[0] } else { // 非c字符,放在递归处理结果的开头 s[0] + toEnd(s.substring(1)) } }
验证效果
输入fffcccfff调用该函数,返回结果为ffffffccc,完全符合需求。
内容的提问来源于stack exchange,提问作者kozimwoo
相关产品推荐
相关产品推荐

