7.11牛客题(递归)
1、对递归程序的优化的一般的手段为(A) A 尾递归优化 B 循环优化 C 堆栈优化 D 停止值优化 解析: https://www.cnblogs.com/Alexander-Lee/archive/2010/07/21/1782543.html 尾递归 : 在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。 尾递归调用时,如果做了优化,栈不会增长,因此,无论多少次调用也不会导致栈溢出。 遗憾的是,大多数编程语言没有针对尾递归做优化。 以斐波那契数列为例子 普通的递归版本 int fab(int n){ if(n<3) return 1; else return fab(n-1)+fab(n-2); } 具有"线性迭代过程"特性的递归―尾递归过程 int fab(int n,int b1=1,int b2=1,int c=3){ if(n<3) return 1; else { if(n==c) return b1+b2; else return fab1(n,b2,b1+b2,c+1); } } 以fab(4)为例子 2、采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是() 递归次数与每次划分后得到的分区处理顺序无关。 解析: