2012年计算机学科专业基础综合试题参考答案一、单项选择题1
解析:本算法是一个递归运算,即算法中出现了调用自身的情形
递归的边界条件是n~l,每调用一次factO,传入该层facto的参数值减l
采用递归式来表示时间复杂度有0(1)n~1T(n)={T(n-1)+1n>1则T(n)=T(n-1)+1=T(n-2)+2=…=T(l)+n-1=O(n),故时间复杂度为O(n)
解析:表达式求值是栈的典型应用
中缀表达式不仅依赖千运算符的优先级,而且要处理括号
后缀表达式的运算符在表达式的后面且没有括号,其形式已经包含了运算符的优先级
所以从中缀表达式转换到后缀表达式需要用运算符进行处理,使其包含运算符优先级的信息,从而转换为后缀表达式的形式
转换过程如下表:运算符栈中缀未处理部分后缀生成部分说明#a+b-a*((c+d)/e-t)+g#+b-a*((c+d)/e-f)+ga+b-a*((c+d)le-f)+ga"+"入栈+-a*((c+d)/e-f)+gaba*((c+d)/e-f)+gab+"+"出栈,"-”入栈*((c+d)/e-f)+gab+a一*((c+d)/e-f)+gab+a"*"入栈一*((c+d)/e-f)+gab+a两个"("依次入栈-•((+d)/e-f)+gab+ac一*((+d)/e-f)+gab+ac"+"入栈一*((+)/e-f)+gab+acd一*(/e-f)+gab+acd+"+"和"("依次出栈一*(/e-f)+gab+acd+"I"入栈运算