48、编写一个名为 copyStack() 的 C++ 函数,该函数将一个栈的内容复制到另一个栈中。算法传入两个栈,即源栈和目标栈。栈的顺序必须相同。(提示:使用一个临时栈来保留顺序)
以下是实现 copyStack() 函数的 C++ 代码:
#include <iostream>
#include <stack>
void copyStack(std::stack<char>& source, std::stack<char>& destination) {
std::stack<char> temp;
// 将源栈元素弹出到临时栈
while (!source.empty()) {
temp.push(source.top());
source.pop();
}
// 将临时栈元素弹出到目标栈和源栈
while (!temp.empty()) {
char element = temp.top();
destination.push(element);
source.push(element);
temp.pop();
}
}
49、编写一个C++函数来检查两个栈的内容是否相同。
以下是一个用于检查两个栈内容是否相同的 C++ 函数示例:
#include <iostream>
#include <stack>
// 检查两个栈内容是否相同的函数
bool areStacksIdentical(std::stack<int> stack1, std::stack<int> stack2) {
if (stack1.size() != stack2.size()) {
return false;
}
while (!stack1.empty()) {
if (stack1.top() != stack2.top()) {
return false;
}
stack1.pop();
stack2.pop();
}
return true;
}
50、当出现以下哪种情况时会发生无限递归:(a) 省略了基本情况;(b) 永远无法到达基本情况;(c) (a) 和 (b) 两种情况;(d) 以上都不是
C
51、斐波那契函数Fib(n) = Fib(n - 1) + Fib(n - 2)是以下哪种的示例:(a) 直接递归 (b) 树递归 (c) 线性递归 (d) (a)和(b)都对
D
52、任何递归函数都可以转换为一个完全等价的非递归函数 (a) 总是 (b) 从不 (c) 有时 (d) 如果函数是尾递归
A
53、以下哪种算法策略会产生本质上递归的代码?(a) 贪心范式 (b) 分治法范式 (c) 动态规划范式 (d) (a) 和 (c) 都对
B
54、递归的优点是(a)代码量更少 (b)时间复杂度更低 (c)空间复杂度更低 (d)以上都不是
D
55、用于递归的数据结构是(a)栈 (b)队列 (c)树 (d)以上都不是
A
56、考虑以下代码:void foo(int n, int sum = 0) { int k = 0, j = 0; if(n == 0) return; k = n % 10; j = n/10; sum = sum + k; foo(j, sum); printf(“%d,”, k); } int main() { int a = 2048, sum = 0; foo(a, sum); printf(“%d”, sum); } 该程序会输出什么?(a) 8, 4, 0, 2, 14 (b) 8, 4, 0, 2, 0 (c) 2, 0, 4, 8, 14 (d) 2, 0, 4, 8, 0
B
57、考虑以下代码:int f(int n) { static int i = 1; if(n >= 5) return n; n = n + i; i++; return(f(n)); } 调用f(1)时返回的值是多少?(a) 5 (b) 6 (c) 7 (d) 8
B
58、以下代码是 _ 递归的示例。funA() { funB(); } funB() { funA(); } (a) 直接 (b) 间接 (c) 既是 (a) 也是 (b) (d) 以上都不是
B
59、以下代码是______递归的一个例子。funA() { … funA(); … funA(); } (a) 线性 (b) 树型 (c) 既是(a)也是(b) (d) 以上都不是
B
60、在二分查找中,将给定的键与数组的中间元素进行比较。如果匹配成功,则搜索成功;否则,比较结果决定搜索是限制在数组的上半部分还是下半部分。编写一个递归函数 Binary(key, A, n),其中 n 是数组 A 的大小。
以下是实现该功能的递归函数代码:
int Binary(int key, int A[], int first, int last) {
if (first <= last) {
int mid = (first + last) / 2;
if (A[mid] == key) {
return mid;


被折叠的 条评论
为什么被折叠?



