递归,是某个函数直接或者间接地调用自身,这样原问题的求解就转换为了许多性质相同但是规模更小的子问题。求解时只需要关注如何把原问题划分成符合条件的子问题,而不需要过分关注这个子问题是如何被解决的。根据C语言函数调用,我们学习递归思想,下面来看例题:
1.
这个式子就是著名的勒让德多项式,根据函数调用可以写出程序如下:
需要注意的是在函数编写过程上不要出差错。
我承认这道问题确实是比较无聊比较无脑,但是其中的精神需要我们值得思考,看到那么长的一串数字我们需要用到长整型(ong long int),下面看程序:
这不就类似于斐波那契数列吗?!通过寻找规律我们得到了上面的程序,十分简练,但是我们需要注意,在输出环节会出现一些问题,在输入60的时候我们需要等很长时间需要计算机去计算,重复计算很多步骤,本人亲试,输入50的时候结果输出长达一分钟之久!更别提60了,虽然最后都能输出结果,但是效率很低,所以我们要对程序进行改进,我们现在主要解决的就是重复计算的问题,那么究竟该如何是好,或许我们可以用数组存储计算的那个数,这样下一次计算就很快了!来看下方的改进程序,改进程序如下:
后面学到的动态规划也经常使用数组存储一定的状态,下面是输出结果:
以上就是递归函数的全部内容。