强化训练专题1
递归逆序打印
作业代码需要放在word里面发给我以及运行的程序的截图
练习题1:使用前驱索引倒序打印数组
题目描述
给定一个整数数组和一个与之对应的“前驱索引”数组。每个位置的前驱索引表示在原数组中,当前元素之前的一个元素的位置。使用这个前驱索引数组,你的任务是倒序打印出原数组的元素,从最后一个元素开始追溯至第一个元素。请使用递归方法完成这个任务,不要使用循环结构,也不要使用全局或静态变量来存储结果。
示例输入
原数组:[5, 3, 4, 8, 6]
前驱索引数组:[-1, 0, 1, 2, 3]
示例输出
6 8 4 3 5
函数模板
#include <iostream>
#include <vector>
using namespace std;
void printWithPredecessor(const vector<int>& arr, const vector<int>& pred, int index) {
// 你的代码
}
int main() {
vector<int> arr = {5, 3, 4, 8, 6};
vector<int> pred = {-1, 0, 1, 2, 3};
printWithPredecessor(arr, pred, arr.size() - 1);
return 0;
}
在这个练习中,printWithPredecessor
函数接收三个参数:整数数组 arr
,前驱索引数组 pred
,和一个表示当前要打印元素的索引 index
。你需要实现这个函数,使其能够利用前驱索引数组,从给定的 index
开始,倒序打印原数组中的元素。
提示
- 递归的基本情况是当
index
为 -1 时,表示没有前驱元素,函数什么也不做直接返回。 - 在递归调用之前打印元素将影响打印的顺序,而你需要在恰当的时机调用递归函数以实现倒序打印。
这个练习将帮助你理解如何使用递归和前驱索引来遍历和操作数组。如果你需要更多帮助或有疑问,请随时提问!
练习题2:递归逆序打印字符串
题目描述
给定一个字符串,你的任务是使用递归方法逆序打印出字符串中的所有字符。请不要使用循环结构,也不要使用全局或静态变量来存储结果。
示例输入
字符串:"hello"
示例输出
"olleh"
函数模板
#include <iostream>
using namespace std;
void printReverseString(const string& str, int index) {
// 你的代码
}
int main() {
string str = "hello";
printReverseString(str, str.length() - 1);
return 0;
}
练习题3:递归逆序打印链表
题目描述
假设你有一个单向链表的元素数组和一个与之对应的“前驱索引”数组(由于你是小学生,我们不使用真正的链表,而是用数组模拟)。每个位置的前驱索引表示在链表中,当前元素之前的一个元素的位置。使用这个前驱索引数组,你的任务是倒序打印出链表的元素,从最后一个元素开始追溯至第一个元素。请使用递归方法完成这个任务,不要使用循环结构,也不要使用全局或静态变量来存储结果。
示例输入
链表元素数组:[4, 2, 5, 3, 1]
前驱索引数组:[-1, 0, 1, 2, 3]
示例输出
1 3 5 2 4
函数模板
#include <iostream>
#include <vector>
using namespace std;
void printLinkedListReverse(const vector<int>& list, const vector<int>& pred, int index) {
// 你的代码
}
int main() {
vector<int> list = {4, 2, 5, 3, 1};
vector<int> pred = {-1, 0, 1, 2, 3};
printLinkedListReverse(list, pred, list.size() - 1);
return 0;
}
练习题4:递归逆序打印数字序列
题目描述
给定一个数字序列,你的任务是使用递归方法逆序打印出序列中的所有数字。请不要使用循环结构,也不要使用全局或静态变量来存储结果。
示例输入
数字序列:[1, 2, 3, 4, 5]
示例输出
5 4 3 2 1
函数模板
#include <iostream>
#include <vector>
using namespace std;
void printNumbersReverse(const vector<int>& numbers, int index) {
// 你的代码
}
int main() {
vector<int> numbers = {1, 2, 3, 4, 5};
printNumbersReverse(numbers, numbers.size() - 1);
return 0;
}
练习题5:递归逆序打印数组元素和它们的索引
题目描述
给定一个整数数组,你的任务是使用递归方法逆序打印出数组中的所有元素及其索引。请不要使用循环结构,也不要使用全局或静态变量来存储结果。
示例输入
整数数组:[10, 20, 30, 40, 50]
示例输出
元素:50,索引:4
元素:40,索引:3
元素:30,索引:2
元素:20,索引:1
元素:10,索引:0
函数模板
#include <iostream>
#include <vector>
using namespace std;
void printArrayElementsAndIndicesReverse(const vector<int>& arr, int index) {
// 你的代码
}
int main() {
vector<int> arr = {10, 20, 30, 40, 50};
printArrayElementsAndIndicesReverse(arr, arr.size() - 1);
return 0;
}