[英]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.