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

Python递归实现字符串基数排序print输出正常但返回None问题

问题根因

你写的radix函数的递归分支没有设置返回值。函数仅在c == maxlength的终止条件分支下显式返回了Out变量,而else分支中你只是调用了radix(Out, c),并没有将递归调用的结果返回,Python中函数没有显式return语句时会默认返回None,这就是你最终拿到的返回值始终为None的原因。

修复方案

只需要修改radix函数else分支的最后一行,将递归调用的结果返回即可,修改后的radix函数对应代码如下:

def radix(I, c = 0):
        Count = [0] * 128
        Out = [0] * len(I)

        for x in I:     #遍历输入数组的每一个元素
            i = grc(x, c)
            Count[i] = Count[i] + 1

        for x in range(1, 128):
            Count[x] += Count[x-1]

        x = len(I) - 1
        while x >= 0:
            temp = I[x]
            tempbyte = grc(temp, c)
            Count[tempbyte] -= 1
            Out[Count[tempbyte]] = temp
            x -= 1
        
        maxlength = len(max(I, key=len)) - 1
        print("c: " + str(c) + ' 最大长度: ' + str(maxlength))
        if c == maxlength:
            print("正在返回")
            print(Out)
            return Out
        else:
            print("进入递归 - 当前c值: " + str(c))
            c += 1
            return radix(Out, c)

运行验证

修改后调用main函数,result变量会拿到正确的排序结果:['az', 'dc', 'jb', 'va', 'zb'],和你在终止条件分支打印的Out结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:06:03