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

如何实现递归函数sumString计算字符串中偶ASCII值字符的和?

解决递归函数sumString的实现问题

需求说明

需要实现递归函数def sumString(st):,接收一个字符串参数,计算其中ASCII值为偶数的字符的ASCII值之和。

你的代码问题分析

第一段代码(未筛选偶数)

def  sumString(st):
     if not st:
        return 0
     else:
        return ord(st[0]+sumString(st[1:])]

存在两个语法错误:

  • ord()参数错误:st[0]是字符,sumString(...)是整数,二者不能直接拼接作为ord()的参数,正确写法是单独计算ord(st[0]),再和递归结果相加。
  • 括号不匹配:return语句末尾误用了],应该改为)。

第二段代码(逻辑错误)

def  sumString(st):
     if not st:
        return 0
     t=[ord(st[0]),sumString(st[1:])]
     for item in t:
         if item%2==0:
            return item+t

逻辑完全偏离递归的正确思路:

  • 将当前字符ASCII值和递归结果放入列表循环属于冗余操作,递归应逐步累加符合条件的值。
  • return item+t是整数与列表相加,类型不匹配会直接报错。
  • 找到第一个偶数就直接返回,忽略了后续字符的计算,不符合需求。

正确的递归实现

def sumString(st):
    # 基线条件:空字符串无字符可计算,返回0
    if not st:
        return 0
    current_ascii = ord(st[0])
    # 当前字符ASCII为偶数则累加,否则仅返回剩余字符串的计算结果
    if current_ascii % 2 == 0:
        return current_ascii + sumString(st[1:])
    else:
        return sumString(st[1:])

代码解释

  • 基线条件:当输入字符串为空时,没有字符需要计算,返回0。
  • 递归步骤:
    1. 计算当前第一个字符的ASCII值current_ascii。
    2. 判断该值是否为偶数:若是,将其与剩余字符串的递归计算结果相加;若否,直接返回剩余字符串的递归计算结果。
    3. 每次处理字符串的第一个字符,逐步缩小问题规模,直到字符串为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:45:36