版权声明:转载无所谓的。。。 https://blog.csdn.net/xuxiayang/article/details/82809638
大意
有 片荷叶在池塘上。因为如此这般,有一只年轻的青蛙要在荷叶上跳。它是这样跳的:假如它在第i 号荷叶上,那么它等概率地跳到1 到i 号的荷叶中的一个,跳到1 号荷叶结束。求这只青蛙期望跳多少次结束。
思路
设
表示
片荷叶时的期望,可以发现
(实际是0,在这里为了方便递推采用1)
注意:当 时要特判
代码
#include<cstdio>
using namespace std;double f[20001],s;int n;
signed main()
{
scanf("%d",&n);
if(n==1) return printf("0.00")&0;//特判
f[1]=1;s=1;
for(register int i=2;i<=n;i++)
{
f[i]=1+s/(i-1);//动态转移
s+=f[i];//s为前缀和
}
printf("%.2lf",f[n]);//输出
}