递归 return python 中数字 0 到 n 的元组

Recursively return a tuple of numbers 0 to n in python

所以我想做的基本上是创建一个递归函数,return 是一个从 0 到给定数字 n 的数字元组,不使用 range()、循环或列表。问题是这样写的:

"Define a recursive function called rec_range() that takes a natural number n and returns a tuple of numbers starting with 0 and ending before n. So rec_range(5) returns (0,1,2,3,4) and rec_range(1) returns (0,)."

问题是我不知道如何创建一个 return 是元组的函数。我知道如何使用递归获得数字 n 的阶乘,但我们从未研究过如何 return 元组中的多个数字。

我现在唯一拥有的是:

def rec_range(n):
    """Takes a natural number n and returns a tuple of numbers starting with 0 and ending before n.

    Natural Number -> tuple"""
    if n == 0
        return (,)
    elif n == 1:
        return (0,)
    else:
        ???

抱歉,如果这个问题的答案真的很明显,我是编程新手

您想将元组附加在一起,因此使用 + 并递归您的函数,将值降低 1 。此外,n == 0return(或 return None)。确实 n == 0 调用是不必要的,您的代码可能更惯用,但我会把它留给您。

def rec_range(n):
    """Takes a natural number n and returns a tuple of numbers starting with 0 and ending before n.

    Natural Number -> tuple"""
    if n == 0:
        return 
    elif n == 1:
        return (0,)
    else:
        return rec_range(n-1) + (n-1,)

输出:

>>>rec_range(4)
(0, 1, 2, 3)