如何将迭代实现的DNA序列转译函数改写为递归实现?
DNA转译函数递归改写方案
我们可以把整个序列转译的大问题拆解为「单个字符转译 + 剩余子序列转译」的小问题,通过递归实现需求,具体逻辑和代码如下:
- 递归终止条件:当输入的序列为空时,直接返回空字符串,结束递归调用
- 递归逻辑:每次取当前序列的第一个字符完成映射转译,再拼接上剩余子序列的递归转译结果即可
- 优化点:把映射字典设置为函数默认参数,避免每次递归调用重复创建字典,减少不必要的性能开销
改写后的递归代码:
def dna(seq, hashtable={'A': 'U', 'G': 'C', 'T': 'A', 'C': 'G'}): # 递归出口:序列为空时返回空字符串 if not seq: return "" # 处理首字符后递归处理剩余子序列 return hashtable[seq[0]] + dna(seq[1:]) print(dna('AGCTGACGTA'))
运行上述代码输出结果和原迭代版本完全一致,均为UCAGCUGCAU。
内容的提问来源于stack exchange,提问作者flarezel
相关产品推荐
相关产品推荐

