从1开始,求出所有的和为21的连续正整数数列。比如1+2+3+4+5+6 和为 21, 6+7+8和为21。
解法:该题目仍然需要首尾两个指针,一个为start,一个为end。sum=start+end。 如果sum大于21,start后移,如果等于21,打印start到end的数列。start,end全部后移。如果小于21,end后移。指针移动时。注意,sum的值也要相应变化。
def addSeq(n):
start, end = 1, 2
stop = (n+1) / 2
mysum = start + end
while start < stop:
if mysum == n:
print range(start, end+1)
mysum -= start
start += 1
end += 1
mysum += end
elif mysum < n:
end += 1
mysum += end
else:
mysum -= start
start += 1
if __name__ == '__main__':
addSeq(21)
答案:
C:\Python27\python.exe E:/cyou-inc.com/test/test.py
[1, 2, 3, 4, 5, 6]
[6, 7, 8]
[10, 11]
转载于:https://blog.51cto.com/gccmx/1736373