您的位置:首页 > 其它

函数的递归--解决问题的底层思路

2016-12-31 13:52 225 查看
函数的递归是一种代码的重用,直到满足一定的条件从而停止这个递归过程。可以参考数学归纳法对数学命题的证明来理解这个过程,数学的证明就对应于具体问题的求解。事实上,先定义再运算本来就是一般数学命题的基本方式。

函数可以嵌套调用,但不可以嵌套定义。函数之间可以形成复杂的嵌套结构,当函数之内形成嵌套结构,就如同罗素的理发师悖论(类似于调用自身函数产生矛盾),看似是一个矛盾,但哥德尔定理指出没有一种公理系统可以导出数论中的所有真实命题,除非该系统本身存在悖论(存在一个不可判定的命题,S和~S都成立,动态的死循环),这就使得我们在这种悖论式的假设下形成可以导出所有真实命题的系统,这对应于具体问题的求解。因此函数的调用递归具有解决问题的强大能力。而实际上,计算机解决问题就是基于希尔伯特的形式主义思想,通过符号逻辑的方法来进行数学语句的公式表述,并用形式的程序表示推理,最后演变为我们熟知的图灵机。

1递推是从初始值出发,找到第n次操作与第n-1次操作的关系,一直推广其适用范围;递归则是一种逆过程,把复杂的问题减而治之,不断收缩求解的范围,直到初始值,然后可以使用递推的方式求解我们感兴趣的问题。

2模拟连续发生的动作,斐波那契数列求解就是这样的连续算法求解。这实际上就是算法的具体执行过程,具体的操作以及不同次操作之间的关系,还有最重要的边界条件;

3自动分析,假设存在解决问题的函数,然后分析如何解决问题,通过弄明白最简单情况下其解决问题的方法,然后递推。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  学习 在路上