快速排序优化-尾递归(需再加内容)

来源:互联网 发布:linux vi 全选复制 编辑:程序博客网 时间:2024/05/19 15:40

看到了这么一个面试的问题,我能想到的就是,随机选择标杆。

但是看了看网上的说法,好像是要牵扯到一个叫做:尾递归的概念

顾名思义,尾递归就是从最后开始计算, 每递归一次就算出相应的结果, 也就是说, 函数调用出现在调用者函数的尾部, 因为是尾部, 所以根本没有必要去保存任何局部变量. 直接让被调用的函数返回时越过调用者, 返回到调用者的调用者去。尾递归就是把当前的运算结果(或路径)放在参数里传给下层函数,深层函数所面对的不是越来越简单的问题,而是越来越复杂的问题,因为参数里带有前面若干步的运算路径。
从斐波那契的题,看看尾递归:
普通递归,非常直观

 int FibonacciRecursive(int n) {     if( n < 2)         return n;     return (FibonacciRecursive(n-1)+FibonacciRecursive(n-2)); }

尾递归

int FibonacciTailRecursive(int n,int ret1,int ret2) {    if(n==0)       return ret1;      return FibonacciTailRecursive(n-1,ret2,ret1+ret2); }

感受一下区别,在快排中,就没简单理解了。

先这样吧。。感觉暂时看不完了