def sum_row(n):
final = n*(n+1)/2
start = final - n
return final*(final+1)/2 - start*(start+1)/2
:
n*(n-1)//2
그래서이가 조금이라도 더 우아하게 할 수 있기 때문에 사람들의 무리에 의해 언급 한 바와 같이
def triangle_sum(n):
start = sum(range(n))+1
return sum(range(start,start+n))
, 당신은 분석적 sum(range(n))
을 표현할 수
또는 어쩌면
작동합니까 어떻게
def sum_row(n):
final = n*(n+1)/2
return sum((final - i) for i in range(n))
:
함수가하는 첫 번째 일은 각 행의 마지막 수를 계산하는 것입니다. n = 5 인 경우 15를 반환합니다. 왜 작동합니까? 각 행마다 오른쪽의 숫자를 행 번호만큼 증가시킵니다. 처음에는 1을가집니다. 1 + 2 = 3; 3 + 3 = 6; 그런 다음 6 + 4 = 10, ecc. 이 공식은 당신이 단순히 1 + 2 + 3 + .. + n을 계산하는 것으로 유명한 공식에 대해 n (n + 1)/2와 같습니다.
마지막으로 최종 숫자를 합계 할 수 있습니다. - 루프는 간단합니다 (목록 작성은 간단합니다). 또는 1에서 최종까지 모든 숫자를 합친 다음 합계를 뺍니다. 표시된 수식에서와 같이 1에서 최종 - n까지의 숫자; 당신은 몇 가지 수학 연산과 더 잘 할 수
출처
2012-10-11 17:18:41
Ant
힌트 : 각 행의 가장 왼쪽 숫자의 규칙을 참조? 1,2,4,7,11,16, ... – Junuxx
http://oeis.org/A006003 – OrangeDog