Python:Float对象不可编辑

Python:Float对象不可编辑,python,recursion,Python,Recursion,我必须计算一个有递归的方程。但是如果我执行代码,我会失败,因为Float对象是不可编辑的 我的代码是: def v(t, c): result = [] if t == 0 or c == 0: return 0 q = v(t - 1, c) - v(t - 1, c - 1) return max((0.2*(400-q)), (0.6*(400-q)), (1*(1200-q)), (0.85*(1115-q)), (0.87*(1127-

我必须计算一个有递归的方程。但是如果我执行代码,我会失败,因为Float对象是不可编辑的

我的代码是:

def v(t, c):
    result = []
    if t == 0 or c == 0:
        return 0
    q = v(t - 1, c) - v(t - 1, c - 1)

    return max((0.2*(400-q)), (0.6*(400-q)), (1*(1200-q)), (0.85*(1115-q)), (0.87*(1127-q))) + v(t-1,c)
x=v(2,1) 打印(x)

我该怎么做才能得到结果?谢谢

您正在使用max(),但函数中的参数是一个元组(0.85*(1115-q))+(0.87*(1127-q)),这是不对的

max()
需要传递多个参数,在您的情况下,只有一个参数会导致错误。尝试删除
max
或向
max()
函数添加一个以上的结果,以使其正确运行

def v(t, c):
    result = []
    if t == 0 or c == 0:
        return 0
    q = v(t - 1, c) - v(t - 1, c - 1)
    return ((0.85 * (1115 - q)) + (0.87 * (1127 - q))) + v(t - 1, c)

x = v(2, 1)
print(x)

max
接受一个iterable,你给它传递一个
float
。这个错误消息非常中肯。当您将单个值传递给函数时,您希望其中的最大值是多少?是否可以在此处发布错误消息?/Max应传递一个元组。实际上,我的代码是:return max((0.2*(400-q)),(0.6*(400-q)),(1*(1200-q)),(0.85*(1115-q)),(0.87*(1127-q))+v(t-1,c)我删除了代码的一部分,以便更容易理解它是否运行良好?我已经在网上查过了,答案是1200@SerkanKılınç如果答案解决了你的问题,请接受并投票。事实上,我的代码是:return max((0.2*(400-q)),(0.6*(400-q)),(1*(1200-q)),(0.85*(1115-q)),(0.87*(1127-q))+v(t-1,c)我删除了代码的一部分以便于理解