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

如何用Python递归实现DNA转录?禁止循环与translate函数

DNA到RNA的递归转录实现

你的代码核心问题出在transcribe函数的递归逻辑上,具体问题点:

  • s[0:x]是取字符串前len(s)-1个字符,不是单个字符,用来判断等于'A'/'C'等完全不成立
  • one_dna_to_rna(s)是把整个字符串传入只处理单个字符的函数,会直接返回空字符串,导致递归拼接结果错误
  • 递归的顺序搞反了,应该先处理当前第一个字符,再递归处理剩余子串,而不是反过来

修正后的代码如下:

def one_dna_to_rna(c):
    """Converts a single-character c from DNA nucleotide
       to complementary RNA nucleotide
    """
    if c == 'A':
        return 'U'
    elif c == 'C':
        return 'G'
    elif c == 'G':
        return 'C'
    elif c == 'T':
        return 'A'
    else:
        return ""  # 处理空格或其他无效字符,直接忽略

def transcribe(s):
    """ Argument is a string consisting of DNA nucleotis (A, C, G, T)
        Output will be (A -> U, C -> G, G -> C, T -> A)
    """
    # 递归终止条件:空字符串直接返回空
    if not s:
        return ""
    # 处理第一个字符,再递归处理剩下的子串,拼接结果
    return one_dna_to_rna(s[0]) + transcribe(s[1:])

# 测试用例
assert transcribe('ACGTTGCA') == 'UGCAACGU'
assert transcribe('ACG TGCA') == 'UGCACGU'  
assert transcribe('GATTACA') == 'CUAAUGU'

逻辑说明:

  • 递归的核心是拆分问题:把整个字符串的转录拆成「第一个字符的转录」加上「剩余子字符串的转录」
  • 终止条件是当字符串为空时,返回空字符串,递归停止
  • one_dna_to_rna函数负责单个字符的转换,遇到非DNA字符(比如空格)直接返回空,实现自动忽略的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:10:56