我目前正在学习Python,希望对迭代函数和递归函数之间的区别进行一些说明。我知道递归函数会自己调用,但是我不确定如何定义一个迭代函数。
例如,我写了这段代码
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)
我认为这是一个迭代函数,但是经过一些研究后我不确定。我需要特别知道,因为下一个练习要求我编写一个递归/迭代的函数版本(取决于我的第一个函数是什么)。
答案 0 :(得分:1)
所以问题是“编写sum的迭代和递归版本”。很好。
不要使用内置的sum方法,而是自己编写。我给你迭代,你应该弄清楚递归:
return noLastArg(std::make_index_sequence<sizeof...(T)+1u>{},
std::make_tuple(obj, last<Obj, T...>{}, field...));
这是迭代的,因为它对所有值进行迭代并将其求和。
编辑:很明显,您的帖子是迭代的。您是从函数def my_iterative_sum(a):
res = 0
for n in a:
res += a
return res
中调用函数f
吗?不。
也许阅读一下什么是递归将对此有所帮助。 https://www.google.com/search?q=recursion
答案 1 :(得分:1)
递归函数在未达到出点时调用自身,而迭代函数通过范围内的迭代更新计算值。
答案 2 :(得分:1)
对于那些仍然希望了解递归和迭代函数之间的区别的人。
迭代
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