递归算法转换为非递归算法

递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解。对于某些复杂问题(例如hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题;另外,有些程序设计语言不支持递归,这就需要把递归算法转换为非递归算法。

将递归算法转换为非递归算法有两种方法,一种是直接求值,不需要回溯;另一种是不能直接求值,需要回溯。前者使用一些变量保存中间结果,称为直接转换法;后者使用栈保存中间结果,称为间接转换法,下面分别讨论这两种方法。

vim 插件配置攻略

网友 k-vim 的配置 https://github.com/wklken

给人一条Vim 命令,他能折腾一晚上;告诉他怎么自定义Vim 命令,他能捣腾一辈子

生命不息,折腾不止 (╯‵□′)╯︵┻━┻)

编辑器之神 = 生产力(效率为王) + 性感(界面快捷键) + 装x神器

中缀表达式求值

给定一个中缀表达式,求出该表达式的值。

要求支持“加减乘除 + - * /、取余 %、幂运算 ^、一元正负号 + -、括号 ()、数的科学表示法符号 E e”,其中含有一元操作符’+ -’,也含有从右向左结合性的操作符’^’,注意操作数的位数可以为多位。

快速排序 QuickSort

7-4 快速排序中的堆栈深度 7.1节中QUICKSORT算法包含有两个对其自身的递归调用。在调用PARTITION后,左边的子数组和右边的子数组分