当total=total+term(k)在每个循环之后调用时,x不知何故要大1。为什么?(Python 3.5版)

2024-04-18 10:16:17 发布

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

当total=total+term(k)在每个循环x以某种方式变大1后被调用时,Sum\u naturals函数将恒等式函数传入“term”中的求和函数。为什么?你知道吗

def summation(n, term):
    total, k = 0, 1
    while k <= n:
        total, k = total + term(k), k + 1
    return total

def identity(x):
    return x

def sum_naturals(n):
    return summation(n, identity)

sum_naturals(10)

Tags: 函数returndef方式identitytotalsumterm
1条回答
网友
1楼 · 发布于 2024-04-18 10:16:17

identity并不是每次传递都增加x。我认为混乱可能源于这句话:

total, k = total + term(k), k + 1

这相当于

total = total + term(k)
k = k + 1

也许这使得我们更容易看到k,从k=1k=10。每次都在增加的是k,而不是x。你知道吗

def summation(n, term):
    total, k = 0, 1
    while k <= n:
        total, k = total + term(k), k + 1
    return total

可以被替换为

def summation(n, term):
    total = 0
    for k in range(1, n+1):
        total = total + term(k)
    return total

甚至

def summation(n, term):
    return sum(term(k) for k in range(1,n+1))

相关问题 更多 >