快速排序优化-尾递归(需再加内容)
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); }
感受一下区别,在快排中,就没简单理解了。
先这样吧。。感觉暂时看不完了
相关文章推荐
- 快速排序优化-4个方面
- 快速排序优化分析
- 快速排序,优化
- 快速排序优化
- 快速排序的优化
- 快速排序的优化
- 快速排序的分析与优化
- 快速排序(二) jdk源码中如何优化快速排序
- Java排序算法优化--快速排序【温故而知新】
- 快速排序的优化 - 数据结构和算法97
- 快速排序的优化
- 第七章快速排序之“采取“尾递归”和“三数取中”技术的快速排序”(思考题7-4、7-5)
- C语言中快速排序和插入排序优化的实现
- C语言中快速排序和插入排序优化的实现
- 快速排序的汇编级优化(windowds平台VS下dubug release模式对比 linux平台gcc的有无优化对比)
- 快速排序的优化--三数取中法
- 优化快速排序 C语言代码
- 起泡排序的进一步优化:快速排序
- 快速排序之“采取“尾递归”和“三数取中”技术的快速排序”
- 快速排序及优化