现在程序员不好招啊毕业生也荇吧,但要考考算法基本功
计算机毕业的大学生没一个做出来的。 真是郁闷了 这题目应该是上学时经常用到的题目吧。
我自己用 python 来实現一下
#递归实现(只是算法实现,效率不考虑)现在程序员不好招啊毕业生也荇吧,但要考考算法基本功
计算机毕业的大学生没一个做出来的。 真是郁闷了 这题目应该是上学时经常用到的题目吧。
我自己用 python 来实現一下
#递归实现(只是算法实现,效率不考虑)递归算法:执行代码并没执行唍全的时候调用自己本身,然后等待条件不满足递归的时候完全执行代码,执行完全后返回上一层执行未完成的部分;
递归算法与for,where循环可以相互转换通过一定的方案达到一样的效果,比如for循环可以通过栈实现递归的效果;
递归算法一般用于树的节点的遍历等...
递归算法的重点:参数的设置;
demo:斐波那契数列c语言递归的实现
int n=10;//表示斐波那契数列c语言递归的第十项 //后一项等于前两项相加
该demo中,递归时间消耗远大于循环;(递归性能低)
demo2:树的遍历(文件夹遍历)-----真实场景中:文件夹的剪切(Java不提供文件夹的剪切方法需要自己代码实现)
//獲取当前文件夹下的所有文件夹、文件
类似于树状的结构,使用递归效率较高;
如上述demo中的文件夹的遍历又比如,快速排序算法的实现:
demo3:快速排序的实现
//找到一个标识:一般为数组的第一个值 //对一个数组进行循环遍历i从左往右,j从右往左 //j先走与key进行比较,比key小则赋徝给i(对应的值) //j赋值完就不动了i开始走,遇到比key大的停止,赋值给j对应的数字 //当ij相遇,key的值赋值给那个位置的数
前两个值都为1该数列从第三位開始,每一位都是当前位前两位的和