【问题标题】:Recursive vs Iterative Functions Python递归与迭代函数 Python
【发布时间】:2018-08-23 20:56:44
【问题描述】:

我目前正在学习 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)

我认为这是一个迭代函数,但经过一些研究后我不确定。我需要特别了解,因为下一个练习要求我编写递归/迭代函数的版本(取决于我的第一个函数是什么)。

【问题讨论】:

  • 是什么让你觉得这不是一个迭代函数?
  • 递归函数F 调用自身,或者直接调用自己,或者通过调用最终调用F 的其他函数来调用自己。其他一切都是迭代函数。就这么简单。
  • 它自称是让我失望的原因。
  • 它不是在调用自己

标签: python recursion iteration python-2.x


【解决方案1】:

递归函数调用自身而不到达出点,而迭代函数通过在范围内的迭代更新计算值。

【讨论】:

    【解决方案2】:

    所以问题是“编写 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

    【讨论】:

    • 我想值得指出的是,在 Python 中编写一个稳定的递归 sum 对于初学者来说并不容易,尤其是如果一个人不知道递归是什么。
    • 我认为递归函数调用了自身,这就是为什么我认为它不是迭代的,即使我知道它在每个项目上都在重复自身。不过谢谢!
    • 我知道你在说什么,但在你的例子中哪里有一个函数调用自己?
    • 睡后再看一遍让我想知道为什么我会这么认为。我可以看到它现在显然是迭代的哈哈。再次感谢您的帮助
    • 嘿,很高兴你把它整理好了!你能实现递归函数吗?
    【解决方案3】:

    致那些可能仍想了解递归和迭代函数之间区别的人。

    迭代

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-17
      • 2019-03-01
      • 2012-04-26
      • 2019-04-03
      • 2016-03-01
      • 2021-12-31
      • 2018-08-16
      • 2012-08-29
      相关资源
      最近更新 更多