c++,写一函数用递归方法求:1+1/2+1/3+1/4+1/5+1/6+…+1/n 5
1个回答
2015-04-30
展开全部
当n很大时,有:1+1/2+1/3+1/4+1/5+1/6+...1/n = 0.57721566490153286060651209 + ln(n)//C++里面用log(n),pascal里面用ln(n)
0.57721566490153286060651209叫做欧拉常数
to GXQ:
假设;s(n)=1+1/2+1/3+1/4+..1/n
当 n很大时 sqrt(n+1)
= sqrt(n*(1+1/n))
= sqrt(n)*sqrt(1+1/2n)
≈ sqrt(n)*(1+ 1/(2n))
= sqrt(n)+ 1/(2*sqrt(n))
设 s(n)=sqrt(n),
因为:1/(n+1)<1/(2*sqrt(n))
所以:
s(n+1)=s(n)+1/(n+1)< s(n)+1/(2*sqrt(n))
即求得s(n)的上限
1+1/2+1/3+…+1/n是没有好的计算公式的,所有计算公式都是计算近似值的,且精确度不高。
自然数的倒数组成的数列,称为调和数列.人们已经研究它几百年了.但是迄今为止没有能得到它的求和公式只是得到它的近似公式(当n很大时):
1+1/2+1/3+......+1/n≈lnn+C(C=0.57722......一个无理数,称作欧拉初始,专为调和级数所用)
人们倾向于认为它没有一个简洁的求和公式.
但是,不是因为它是发散的,才没有求和公式.相反的,例如等差数列是发散的,公比的绝对值大于1的等比数列也是发散的,它们都有求和公式.
0.57721566490153286060651209叫做欧拉常数
to GXQ:
假设;s(n)=1+1/2+1/3+1/4+..1/n
当 n很大时 sqrt(n+1)
= sqrt(n*(1+1/n))
= sqrt(n)*sqrt(1+1/2n)
≈ sqrt(n)*(1+ 1/(2n))
= sqrt(n)+ 1/(2*sqrt(n))
设 s(n)=sqrt(n),
因为:1/(n+1)<1/(2*sqrt(n))
所以:
s(n+1)=s(n)+1/(n+1)< s(n)+1/(2*sqrt(n))
即求得s(n)的上限
1+1/2+1/3+…+1/n是没有好的计算公式的,所有计算公式都是计算近似值的,且精确度不高。
自然数的倒数组成的数列,称为调和数列.人们已经研究它几百年了.但是迄今为止没有能得到它的求和公式只是得到它的近似公式(当n很大时):
1+1/2+1/3+......+1/n≈lnn+C(C=0.57722......一个无理数,称作欧拉初始,专为调和级数所用)
人们倾向于认为它没有一个简洁的求和公式.
但是,不是因为它是发散的,才没有求和公式.相反的,例如等差数列是发散的,公比的绝对值大于1的等比数列也是发散的,它们都有求和公式.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询