从“信件装错”问题向递推问题的延伸
对于含有一定递推规律的实际问题,往往是找到递推公式,而对于给出的题目,sample往往是几个简单的可以计算出来的值,对于sample的分析是一个艰辛的探索过程(有时候确实找不出,其原因是因为数学知识储备不够,另外就是该类题目递推出的数据很大,给出的sample不足以作出结论),这往往需要一些数学方面的储备,以防不测。
关于递推的问题有好多,在下边稍稍总结几个。
一、斐波那契数列问题
描述:除第1,2项外,前n项满足a[n]=a[n-1]+a[n-2],所以递归计算部分源代码就如,
int fib(int n)
{
if(n<=1)return n;
else return fib(n-1)+fib(n-2);
}
同类型题目有兔子数目问题,蜂巢问题等等;
二、信件全部装过错问题
描述:有n封信件,请计算全部装错的种类。其递推公式为a[n]=a[n-1]*n+(-1)^n,n从1开始计数,其主要源代码如下,
int let(int n)
{
if(n<=1)return n-1;
else return let(n-1)*n+pow((-1),n);
}
浙公网安备 33010602011771号