【问题标题】:Would this be considered a recursive function ? if not is there a way to turn it into a recursive function?这会被认为是递归函数吗?如果没有,有没有办法把它变成递归函数?
【发布时间】:2022-12-05 08:41:00
【问题描述】:

我想知道以下是否会被视为递归函数。基本上,该函数将两个参数作为输入,一个列表及其长度,并返回正元素的乘积。例如:

>>> l = [2,-1,1,-3,0]
>>> print(prodop(l,len(l)))
2

这里我们将正元素相乘 (2*1)

def prodop(list1,list2)

    r = 1
    res = [] 
    for i in range(0,s):
        if(l[i] > 0):
            res.append(l[i])
    for i in res:
        r = r * i 
    return r

此代码是否被视为递归函数。如果没有,有没有办法重新排列我写的代码,把它变成一个递归函数?

提前谢谢大家!

【问题讨论】:

  • 递归函数是一个调用自身的函数。您的 prodop 函数不是递归的,因为它不调用自身。

标签: python


【解决方案1】:

不,您提供的代码不被视为递归函数。递归函数是在其定义中直接或间接调用自身的函数。在您的代码中,函数 prodop 不会调用自身。

要将您的代码变成递归函数,您可以将其修改为在遇到列表中的正元素时调用自身。这是您可以这样做的一种方法:

def prodop(l, s):
    if s == 0:
        return 1
    elif l[s-1] > 0:
        return prodop(l, s-1) * l[s-1]
    else:
        return prodop(l, s-1)

此函数首先检查列表的长度是否为 0。如果是,则返回 1,因为列表中没有正元素并且所有元素的乘积为 1。否则,它检查最后一个元素是否在列表中是积极的。如果是,则它使用列表和长度减 1 调用自身,然后将结果乘以最后一个元素。这有效地计算了列表中正元素的乘积。如果最后一个元素不是正数,那么它只是用列表和长度减 1 调用自己,并忽略最后一个元素。

【讨论】:

    猜你喜欢
    • 2019-09-10
    • 2016-07-18
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2013-12-12
    相关资源
    最近更新 更多