Python如何仅使用递归实现列表(List)转换为对应数字
递归实现列表转数字功能
首先修正原代码的几处明显问题:
- 不要使用
list作为参数名,会覆盖Python内置的list类型 - 原调用示例中
base=1属于笔误,要得到十进制结果12329需要传入base=10 - Python打印函数为小写
print,不可首字母大写
完整递归实现代码
def listIntoNumber(input_list, base): # 递归基线条件:列表仅剩余1个元素时直接返回该元素 if len(input_list) == 1: return input_list[0] # 递归逻辑:首位乘base的(剩余列表长度)次方,加上剩余列表的递归计算结果 return input_list[0] * (base ** (len(input_list) - 1)) + listIntoNumber(input_list[1:], base) # 调用测试 print(listIntoNumber([1,2,3,2,9], 10))
运行上述代码将输出预期结果12329。
实现逻辑说明
- 基线条件:当输入列表长度为1时,无需进一步计算,直接返回唯一的元素即可
- 递归拆分:每次取出列表的第一个元素,计算其对应的位权值(base的n次方,n为剩余元素个数),再和剩余子列表的递归计算结果相加,最终得到完整的数字。
内容的提问来源于stack exchange,提问作者Amaan Shah
相关产品推荐
相关产品推荐

