python判断是否一个序列是超增序列
问题描述:
我想用python造一个函数判断是否一个序列是超增序列,即序列中的每个数必须大于其前面所有数的总和,如果是,返回True,否则返回False
以下是我的思路,然而如果传入super_increasing((0, 1, 2, 4))时候返回的是False,应该返回True才对,不知错误在哪,还望大家指教
答
1、for i in range(len(seq)-1) 起始是0,i=0时,if满足条件(此时seq[:0])=[];而sum([]) = 0),所以if条件为true,执行return,结束函数。
2、range(a,b) 取值为左闭右开,即[a,b)
3、range(b) 中省略a,默认值是0
综上,i应该从1开始,到len(seq)-1结束(用range表示为:range(1, len(seq)));
故for i in range(len(seq)-1)修改为for i in range(1,len(seq))
答
def ll(seq):
for i in range(1,len(seq)):
if sum(seq[:i])>=seq[i]:
return False
return True
print(ll([0,1,2,4]))
有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力
答
连续求和,效率太低。建议这样写:
>>> def super_increasing(seq):
s = 0
for i in range(len(seq)-1):
s += seq[i]
if seq[i+1] <= s:
return False
return True
>>> super_increasing([0,1,2,4])
True