Python 递归返回无类型?

Python 递归返回无类型?,python,python-3.x,Python,Python 3.x,我写了一个程序来查找一个问题的超位数,即:9876=9+8+7+6=30=3+0=super-digit=3 无论程序何时不调用自身,这都可以正常工作,但是在上面的例子中,我将得到一个最终的整数值3,它将以同样的方式打印,但是当我返回它时,它将不返回任何值。我想知道为什么会这样 代码如下: def super_digit(n): sup_Digit = 0 intArray = [int(i) for i in str(n)] for i in range(len(int

我写了一个程序来查找一个问题的超位数,即:9876=9+8+7+6=30=3+0=super-digit=3 无论程序何时不调用自身,这都可以正常工作,但是在上面的例子中,我将得到一个最终的整数值3,它将以同样的方式打印,但是当我返回它时,它将不返回任何值。我想知道为什么会这样

代码如下:

def super_digit(n):
    sup_Digit = 0
    intArray = [int(i) for i in str(n)]
    for i in range(len(intArray)):
        sup_Digit += intArray[i]
    if sup_Digit and sup_Digit < 10:
        return int(sup_Digit)
    else:
        super_digit(sup_Digit)

您忘记了返回语句:

def super_digit(n):
    sup_Digit = 0
    intArray = [int(i) for i in str(n)]
    for i in range(len(intArray)):
        sup_Digit += intArray[i]
    if sup_Digit and sup_Digit < 10:
        return int(sup_Digit)
    else:
        return super_digit(sup_Digit)
def超级数字(n):
辅助数字=0
intArray=[int(i)表示str(n)中的i]
对于范围内的i(len(intArray)):
辅助数字+=阵列[i]
如果辅助位和辅助位<10:
返回整数(辅助数字)
其他:
返回超级数字(超级数字)

您忘记了返回语句:

def super_digit(n):
    sup_Digit = 0
    intArray = [int(i) for i in str(n)]
    for i in range(len(intArray)):
        sup_Digit += intArray[i]
    if sup_Digit and sup_Digit < 10:
        return int(sup_Digit)
    else:
        return super_digit(sup_Digit)
def超级数字(n):
辅助数字=0
intArray=[int(i)表示str(n)中的i]
对于范围内的i(len(intArray)):
辅助数字+=阵列[i]
如果辅助位和辅助位<10:
返回整数(辅助数字)
其他:
返回超级数字(超级数字)
return语句使函数退出并返回 向其调用者传递值。一般来说,功能的要点是接受 输入并返回一些东西

好的,因此默认情况下“return”不提供任何值,因此在您的情况下,当条件为
True
时,您将在“if”条件的第一部分返回,但是如果条件转到“else”部分,则返回的值在哪里

def super_digit(n):
        sup_Digit = 0
        intArray = [int(i) for i in str(n)]
        for i in range(len(intArray)):
            sup_Digit += intArray[i]
        if sup_Digit and sup_Digit < 10:
            return int(sup_Digit)
        else:
            return super_digit(sup_Digit)

    print(super_digit(9876))
return语句使函数退出并返回 向其调用者传递值。一般来说,功能的要点是接受 输入并返回一些东西

好的,因此默认情况下“return”不提供任何值,因此在您的情况下,当条件为
True
时,您将在“if”条件的第一部分返回,但是如果条件转到“else”部分,则返回的值在哪里

def super_digit(n):
        sup_Digit = 0
        intArray = [int(i) for i in str(n)]
        for i in range(len(intArray)):
            sup_Digit += intArray[i]
        if sup_Digit and sup_Digit < 10:
            return int(sup_Digit)
        else:
            return super_digit(sup_Digit)

    print(super_digit(9876))

它应该是
返回超级数字(超级数字)
Ugh,新手错误。就这样了,谢谢。一条旁白,第2-5行可以替换为
sup_Digit=sum(int(c)代表str(n)中的c)
应该是
返回sup_Digit(sup_Digit)
Ugh,新手错误。就这样了,谢谢。旁注,第2-5行可以替换为
sup_Digit=sum(int(c)代表str(n)中的c))