1、有函数int func(int i)的实现为
1 2 3 4 5 6 7 8 9 |
|
请问函数调用func(5)的返回值是多少()
正确答案: D
51520120
解题思路:
func(5) = 5 * func(4)
= 5 * 4 * func(3)
= 5 * 4 * 3 * func(2)
= 5 * 4 * 3 * 2 * func(1)
= 5 * 4 * 3 * 2 * 1
= 120
2、队列在程序调用时必不可少,因此递归离不开队列()
正确答案: B 你的答案: B (正确)
对错
解题思路:
递归是栈实现的。栈是先进后出,也就是上次递归调用的时候,保存在栈顶,
在返回的时候出栈,所以是递归是依靠栈实现的.
PS: 非递归形式的深度优先搜索要用栈,而广度优先使用了队列。
3、将一个递归算法转换为非递归算法,通常需要借用的数据结构是( )
正确答案: A 你的答案: A (正确)
栈队列线性表广义表
解题思路:
栈和递归的原理是一样的:
栈是后进先出,递归何尝不是。
递归的第一次判断先‘进’,最后返回;终止条件最后‘进’,第一个返回
4、凡是递归定义的数据结构都可以用递归算法来实现它的操作。( )
正确答案: A 你的答案: A (正确)
正确错误
解题思路:
递归算法:指通过重复,将问题分成同类子问题,而解决问题的方法。
5、4个圆盘的Hanoi塔,总的移动次数为()
正确答案: C 你的答案: C (正确)
781516
解题思路:
设移动n个盘子的汉诺塔问题需要g(n)次移动操作来完成。由展示移动过程算法可知g(n)应是三部分之和。
(1) 将n个盘上面的n-1个盘子借助C桩从A桩移到B桩上,需g(n-1)次移