这个没有循环,虽然内部是存在循环的。不过用的是内置函数,速度很快
print "%0.6f" %reduce(lambda x,y:x+1.0/y,range(1,101))
>>> n=1.0
>>> s=0.0
>>> while(n<=100):
s=s+1/n
n=n+1
>>> s
5.1873775176396206
不使用循环很难吧?你认为该用什么呢?
原来是递归啊,失败。。。
用递归啊。。。
def count (i, j):
x = float(i) + float(1)
y = j + float(1)/x
if int(x) < 100:
count(int(x),y)
else:
print '%0.6f' % y
if __name__ == '__main__':
result = count(0,0)
num=int(raw_input("input a number:"))
print "The sum:",round(reduce(lambda x,y: x+1.0/y,range(1,num+1)),6)