先看代码#include<stdio.h>
void reverse(int arr[],int left,int right)
int main()
{
if(left>right)
{
return;
}
int tmp=arr[left];
arr[left]=arr[right];
arr[right]=tmp;
reverse(arr,left+1,right—1);
}
int arr[]={0,1,2,3,4,5,6,7,8,9};
reverse(arr,0,9);
for(int i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return 0;
定义了一个整形的数组arr 然后进入自定义函数reverse 里面传参了arr 还有0和9
如果left大于right结束递归结束
int tem给上arr left下标 所以说tem是0
arr left等于arr right 所以说arr left等于arr right 所以说arrleft变成9
最后让arr right变成tmp right变成0交完完成
然后left加1 right减一
传进去 arrleft和right下表也进行加减
最后等left大于right 递归结束 依次打印
总结 首先我们要明确的一个点是,Left和right是我们用来进行数组内元素它交换的一个下标。它跟数组里面的元素。它并不是数组里面的元素,这个是我们应该要知道的一个东西。
0123456789才是数组里面的元素,而我们的left和right只是下标而已。
就可以看作,Left和right是座位号。比如这是一个小组啊,第一个人的位置是零,最后一个人的位置是,第一个人的位置是left,最后一个人的位置是right。好,我们现在请left which的同学跟right位置的同学交换位置,然后这两个同学它交换的位置,但是left和right,此时left还是在第一个。位置left还是在最后一个位置,然后这个样子你应该可以,这个很形象。