下列关于栈的叙述中,错误的是( )。
(1)采用非递归方式重写递归程序时必须使用栈 (2)函数调用时,系统要用栈保存必要信息 (3)只要确定了入栈次序,即可确定出栈次序 (4)栈是一种受限的线性表,允许在其两端进行操作
A、仅(1) B、仅(1)、(2)、(3) C、仅(1)、(3)、(4) D、仅(2)、(3)、(4)
C (1)错误。阶乘...
用户登录可进行刷题及查看答案
C (1)错误。阶乘,尾递归都能很好的转换为普通循环 (3)错误。出现顺序不能确定 (4)错误。只允许在一端进行操作
I. 将递归改写成非递归有很多种方式,可以用数组,栈,散列表等等,并非必须使用栈,比如经典的斐波那契数列问题,可以用借助数组用动态规划实现,进一步可以用滚动数组优化,最后只需要3个变量即可实现。I错误。
II. 这里利用了栈先进后出的特性,例如函数A中执行过程中嵌套了函数B(也可以是自身),那么这个时候先要把函数A中的一些变量记录下来,就是压入栈中,然后再调用函数B,等函数B执行完毕返回后,回到函数A继续执行,此时将栈中保存的函数A的变量弹出。II正确。
Ⅲ.入栈次序,出栈序列有卡特兰数种,并不唯一,所以无法确定。Ⅲ错误。
Ⅳ.栈是一种受限的线性表,只允许在其一端进行操作。Ⅳ错误。
综上,Ⅰ、Ⅲ、Ⅳ错误。
本题选C。
登录后提交答案
暂无评论,来抢沙发