所以我想要做的就是做一个递归函数,它返回一个从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:
???
很抱歉,如果对此的答案实际上非常明显,我对编程非常陌生
答案 0 :(得分:2)
您希望将元组附加在一起,因此请使用+
并递归函数,将值降低1。此外,return
仅return 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)