繁体   English   中英

将迭代 function 更改为递归

[英]Changing an iterative function into a recursive one

考虑:

def itr(n):
    s = 0
    for i in range(0, n+1):
        s = s + i * i
    return s

这是一个简单的迭代 function,我想将其更改为递归 function。

def rec(n):
    import math
    if n!=0:
        s=n-(2*math.sqrt(n))
        if s!=0:
            return(s+rec(n))
        else:
            return(n)
    else:
        return n

这是我尝试做上述事情,但我不太正确。

为什么我的解决方案不起作用? 解决办法是什么?

利用:

def recursive(total, n):
    if n == 0:
        return total
    else:
        return recursive(total + n * n, n - 1)

几个想法:

  • 这可以重构为仅使用单个参数,但通过提供总迭代次数和当前迭代次数,可以更轻松地了解如何将迭代方法转换为递归方法。
  • 虽然这个 function可以递归,但不应该递归,因为与迭代方法相比没有任何优势。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM