簡體   English   中英

遞歸與迭代函數 Python

[英]Recursive vs Iterative Functions Python

我目前正在學習 Python 並且想澄清一下迭代函數和遞歸函數之間的區別。 我知道遞歸函數會調用自己,但我不確定如何定義迭代 function。

例如,我寫了這段代碼

random_list = ['6', 'hello', '10', 'find', '7']

def sum_digits(string):
    return sum(int(x) for x in string if x.isdigit())

print "Digits:", sum_digits(random_list)

我認為這是一個迭代 function 但在做了一些研究后我不確定。 我需要具體了解,因為下一個練習要求我編寫遞歸/迭代的 function 版本(取決於我的第一個 function 是什么)。

所以問題是“編寫sum的迭代和遞歸版本”。 大。

不要使用內置的sum方法,而是自己編寫。 我給你迭代,你應該弄清楚遞歸:

def my_iterative_sum(a):
    res = 0
    for n in a:
        res += a
    return res

這是迭代的,因為它會迭代所有值並將其求和。

編輯:顯然,您的帖子是迭代的。 你調用函數f來自於函數f 沒有。

也許閱讀一下什么是遞歸將對此有所幫助。 https://www.google.com/search?q=recursion

遞歸函數在未達到出點時調用自身,而迭代函數通過范圍內的迭代來更新計算值。

對於那些可能仍然希望了解遞歸和迭代函數之間的區別的人。

反復的

def iterative_sum(n):
    result = 1
    for i in range(2,n+1):
        result *= i
    return result
print(iterative_sum(5))

迭代是循環重復執行直到控制條件變為假

遞歸的

def recursive_sum(n):
    if n == 1:
        return 1
    else:
        return n * recursive_sum(n-1)
print(recursive_sum(5))

遞歸函數是函數調用自身時

該鏈接對其進行了更好的說明https://techdifferences.com/difference-between-recursion-and-iteration-2.html

如果你來這里尋找 Python 中的遞歸函數,這里有一個遞歸求和的例子

from typing import Optional

>>> def r_sum(v: int, sum: Optional[int] = None) -> int:
...   if sum is None:
...     sum = 0
...   if v == 0:
...     return sum
...   else:
...     sum = sum + v
...     prev = v - 1
...     return r_sum(prev, sum)
... 
>>> r_sum(3)
6
>>> r_sum(4)
10
>>> r_sum(5)
15

暫無
暫無

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

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