c - 使用递归反转数组
问题描述
当我尝试运行它时,它要求我输入 11 个数字而不是 10 个,这真的很奇怪,然后它会输出一个更奇怪的结果,请帮忙。
void function(int array[],int length,int start)
{
if (length<start)
{
return;
}
int temp=array[start];
array[start]=array[length];
array[length]=temp;
function(array,length-1,start+1);
}
int main()
{
int array[10],num=0,num2=10;
printf("enter the array:\n");
for (int i =0; i<num2; i++)
{
scanf("%d\n",&array[i]);
}
function(array,num2,num);
for (int t = 0; t<num2; t++)
{
printf("%d\n",array[t]);
}
}
那么这是数组 1,2 ... 10,11 的输出
enter the array:
1
2
3
4
5
6
7
8
9
10
11
return
214696143
10
9
8
7
6
5
4
3
2
(lldb)
请帮忙
解决方案
试试这个:
#include <stdio.h>
void function(int array[],int start, int end)
{
if (start < end)
{
int temp;
temp = array[start];
array[start] = array[end];
array[end] = temp;
function(array, start+1, end-1);
}
}
int main()
{
int array[10],num=0,num2=10;
printf("enter the array:\n");
for (int i =0; i<num2; i++)
{
scanf("%d",&array[i]);
}
function(array,num,num2 - 1);
for (int t = 0; t<num2; t++)
{
printf("%d\n",array[t]);
}
}
请注意,在 C 中,数组从 0 开始。最后一个索引是 9 而不是 10。您需要使用length - 1
而不是访问最后一个元素length
推荐阅读
- mysql - MySQL 5.7 中的逐月增长计算
- php - 使用 php eloquent 和 sqlserver 查询需要很长时间
- c# - 在 mvc c# 和 devExpress 16.2 中查看 xtrareports 工具栏时出现问题
- python - 使用 win32com 模块设置 RFC_READ_TABLE 的查询参数?
- javascript - 如何在 Vuex/Nuxt 中设置值
- matlab - MATLAB通过double将符号表达式转换为数字
- android - 特定的 applicationIdSuffix 阻止应用程序启动
- java - 如何删除令牌 JWT
- python - 使用系列的索引索引 Pandas 数据框
- networking - 开源SDN控制器