在python中以递归方式返回数字0到n的元组

时间:2015-03-26 16:47:01

标签: python recursion tuples

所以我想要做的就是做一个递归函数,它返回一个从0到给定数字n的数字元组,不使用range(),循环或列表。问题如下:

"定义一个名为rec_range()的递归函数,它接受一个自然数n并返回一个以0开头并在n之前结束的数字元组。所以rec_range(5)返回(0,1,2,3,4),rec_range(1)返回(0,)。"

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

我现在唯一拥有的是:

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 个答案:

答案 0 :(得分:2)

您希望将元组附加在一起,因此请使用+并递归函数,将值降低1。此外,returnreturn None(或n == 0)。真的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)