总和S(t):
S(1)= 1
S(2)= 4 + 1 + 4
S(3)= 9 + 4 + 1 + 4 + 9
S(4)= 16 + 9 + 4 + 1 + 4 + 9 + 16
S(5)= 25 + 16 + 9 + 4 + 1 + 4 + 9 + 16 + 25
def combine(f, op ,n):
result = f(0)
for i in range(n):
result = op(result, f(i))
return result
def sum(t):
f = lambda x: 2*(x**2)
op = lambda x,y: x+y
n = t+1
return combine(f, op, n)
但是,我不允许更改combine(f, op ,n)
的定义。
有没有办法重新定义sum(t)
以删除额外的1以便我的代码正确无误?
正确答案是:1,9,27,59,109
我的代码提供:2,10,28,60,110
答案 0 :(得分:1)
combine
使用range(n)
因此始终从0开始计数;您无法避免将{1}添加到t
以获得所需的结果。您需要对0
的{{1}}和1
参数进行特殊说明:
f
现在def sum(t):
f = lambda x: 2 * (x**2) if x > 1 else x
op = lambda x, y: x + y
return combine(f, op, t + 1)
和f(0)
分别返回f(1)
和0
,产生预期的输出:
1