簡體   English   中英

遞歸函數返回元組python

[英]recursive functions returning tuples python

我想構建一個RECURSIVE函數,該函數采用自然數n並返回以0開頭並在n之前結束的數字元組。 因此rec_range(5)返回(0,1,2,3,4),rec_range(1)返回(0,)。

這是我到目前為止的內容:

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

natural number -> tuple of numbers"""
   if n = 0:
       return 0
   else:
       return rec_range(0, n)

我不確定下一步該怎么做。 另外,應該注意,由於存在無效的語法錯誤,我無法測試此功能。

在python中,您可以用+連接元組。

def rec_range(n):
    if n == 0:
        return (0,)
    else:
        return rec_range(n - 1) + (n,)

將rec_range(n)定義為以遞增順序返回計數<n的元組。 這模仿了自然數的集合論定義。 除非講師的命令有所不同,否則rec_range(0)(在邏輯上)應為空元組()。

元組的重復並置會使應為O(n)的函數(附加到列表)變成O(n * n)的函數。 如果需要元組而不是列表,則轉換為元組可以是最后一步。 這是O(n)tail_recursive解。

def rec_range(n, answer=None):
    if answer is None:
        answer = []
    if n > 0:
        n -= 1
        answer.append(n)
        return rec_range(n, answer)
    else:
        return tuple(reversed(answer))

print(rec_range(0), rec_range(1), rec_range(10))
#() (0,) (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM