You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将统计字符出现次数是否均为偶数的C语言方法改写成递归形式?

迭代改递归实现方案

核心逻辑说明

原迭代逻辑的核心是两层遍历:外层按步长2遍历字符串索引i,统计当前字符在后续位置的出现次数,标记chars数组状态,最后校验chars数组是否全为非0值。递归实现可以把外层的i循环转化为递归调用层级,不需要修改原有的函数调用逻辑。

递归实现代码

int recursionCheckEven(int i, int j, char str[], int chars[20]) {
    int len = strlen(str);
    // 终止条件:i已经遍历完所有位置,开始校验chars数组
    if (i >= len) {
        for (int k = 0; k < 20; k++) {
            if (chars[k] == 0) {
                return 0;
            }
        }
        return 1;
    }
    // 当前i位置已经被标记处理过,直接跳到下一个i
    if (chars[i] != 1) {
        return recursionCheckEven(i + 2, 0, str, chars);
    }
    // 统计当前字符的出现次数
    int count = 0;
    for (j = i; j < len; j += 2) {
        if (str[i] == str[j] && chars[j] == 1) {
            count++;
            chars[i] = 2;
            chars[j] = 2;
        }
    }
    // 出现次数为奇数,标记chars[i]为0
    if (count % 2 != 0) {
        chars[i] = 0;
    }
    // 递归处理下一个i
    return recursionCheckEven(i + 2, 0, str, chars);
}

调用说明

原有调用逻辑不需要做任何修改,和之前的调用方式完全兼容,传入初始i=0、j=0、目标字符串和初始化全1的chars数组即可。

内容的提问来源于stack exchange,提问作者BiSaXa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:15:04