如何获得递归值以输入幂函数?

2024-06-16 09:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有这个功能,到目前为止我已经做了很多工作。 我试图将addseries函数的结果输入到幂函数中,例如:

6^6+5^5+4^4+3^3+2^2+1+0。。 我在让它工作上遇到了问题。有什么建议吗

def power(n):
    if(n<=0):
        return 0
else:
    return n**n


def addseries(num):
if(num == 0):
    return 0
    else:
        print(num)
        return sumseries(num - 1) + power(num)

Tags: 函数功能returnifdefelsenum建议
3条回答

忽略递归:

n = 6
>>> sum(x ** x for x in range(n, 0, -1))
50069  
# 6 ** 6 + 5 ** 5 + 4 ** 4 + 3 ** 3 + 2 ** 2 + 1 ** 1 
# = 46656 + 3125 + 356 + 27 + 4 + 1 
# = 50069

使用递归:

def power_function(n):
    if n < 1:
        return 0
    return n ** n + power_function(n - 1)

>>> power_function(6)
50069

如果您只需修复缩进和打字错误(例如,sumseries应该是addseries),您的代码实际上可以工作:

def power(n):
    if(n<=0):
        return 0
    else:
        return n**n

def addseries(num):
    if(num == 0):
        return 0
    else:
        return addseries(num - 1) + power(num)

以便:

print(addseries(6))

将输出:

50069

您可以在Python shell中验证:

>>> 1**1 + 2**2 + 3**3 + 4**4 + 5**5 + 6**6
50069
>>>

稍微简化一下:

def addseries(num):
    if(num == 0):
        return 0
    else:
        print(num)
        return num**num + addseries(num - 1)

相关问题 更多 >