c++ - 使用递归反转并打印出数组的内容
问题描述
我需要使用递归反转并打印出以下数组的内容:
int myArray[] = { 65, 89, 74, 25, 21, 54, 38, 64, 11, 45, 19, 48, 46, 83 };
该函数的调用是:
printArray(myArray, arraySize, 0, arraySize - 1);
我的功能是:
void printArray(int values[], int sizeOfArray, int low, int high) {
if (low < high) {
int tempValue = values[low];
values[low] = values[high];
values[high] = tempValue;
printArray(values,sizeOfArray, low+1 ,high-1);
}
for (int i = 0; i < sizeOfArray; i++) {
cout << values[i]<<' ';
}
}
我得到的输出是反转数组总共 8 次。
83 46 48 19 45 11 64 38 54 21 25 74 89 65 83 46 48 19 45 11 64 38 54 21 25 74 89 65 83 46 48 19 45 11 64 38 54 21 25 74 89 65 83 46 48 19 45 11 64 38 54 21 25 74 89 65 83 46 48 19 45 11 64 38 54 21 25 74 89 65 83 46 48 19 45 11 64 38 54 21 25 74 89 65 83 46 48 19 45 11 64 38 54 21 25 74 89 65 83 46 48 19 45 11 64 38 54 21 25 74 89 65
我似乎无法弄清楚这里出了什么问题。我也是数组和递归的新手,因此非常感谢任何帮助。
解决方案
如果假设相同的函数反转,然后打印序列,您可以通过在 for 循环周围加上一个仅在递归调用堆栈的最外层调用为真的条件来实现。
void printArray(int values[], int sizeOfArray, int low, int high)
{
if (low < high)
{
int tempValue = values[low];
values[low] = values[high];
values[high] = tempValue;
printArray(values, sizeOfArray, low+1 ,high-1);
}
if (low == 0)
{
for (int i = 0; i < sizeOfArray; i++)
std::cout << values[i]<<' ';
std::cout << '\n';
}
}
值得注意。sizeofArray
, 或high
, 在这段代码中没有意义。你不需要两者。你可以很容易地做到这一点,例如:
void printArray(int values[], int low, int high)
{
if (low < high)
{
int tempValue = values[low];
values[low] = values[high];
values[high] = tempValue;
printArray(values, low+1 ,high-1);
}
if (low == 0)
{
for (int i = 0; i <= high; i++)
std::cout << values[i]<<' ';
std::cout << '\n';
}
}
或者
同样,您可以使用模板在编译时收集本机数组大小(我将其留作将来的练习,因为现在它可能更像是 Rube Goldberg 解决方案而不是其他任何东西)。
推荐阅读
- php - 使用数据表导入数据时出错
- reactjs - 反应 Form.Control 模型/值映射
- sql-server - 将格式化为 20200321 的 bigint 值转换为格式化为 '2020-03-21 00:00:00' 的日期时间
- node.js - 如何使用 Docker 映像将 Node.js HTTP/2 应用程序部署到 Google Compute Engine 上?
- python - 如何摆脱在循环(python)中仅对最后一个元素使用“end”?
- kubernetes - 如何追踪谁删除了 Kubernetes PVC、部署和 POD
- sharepoint - 从 AWS Lambda 函数上传文件到 SharePoint
- python - 我在脚本中收到 ValueError
- java - 为什么 CustomProjectAggregationOperation 在 SpringMongoTemplate 中不起作用
- javascript - React Material UI Autocmplete,React-window 在列表顶部重新渲染