您的位置:首页 > 其它

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

2017-09-24 20:10 218 查看
看到了这么一个面试的问题,我能想到的就是,随机选择标杆。

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

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

从斐波那契的题,看看尾递归:

普通递归,非常直观

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);
}


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

先这样吧。。感觉暂时看不完了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  快速排序