递归不返回任何类型?

2024-09-27 17:59:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个程序来找出一个问题的超数,即: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)

下面是我的测试用例:

from unittest import TestCase

tc = TestCase()

tc.assertEqual(super_digit(5), 5)
tc.assertEqual(super_digit(30), 3)
tc.assertEqual(super_digit(9876), 3)
tc.assertEqual(super_digit(11111111111111), 5)
tc.assertEqual(super_digit(12345678901234567890), 9)

Tags: 方法in程序for整数testcase例子int
2条回答

The return statement causes your function to exit and hand back a value to its caller. The point of functions in general is to take in inputs and return something.

好的,那么默认情况下'return'不会给出任何结果,所以在您的例子中,当条件为True时,您在'if'条件的第一部分返回,但是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))

输出:

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:
        return super_digit(sup_Digit)

相关问题 更多 >

    热门问题