gpt4 book ai didi

C++:数组的递归函数

转载 作者:行者123 更新时间:2023-11-30 03:34:54 24 4
gpt4 key购买 nike

我试图以相反的顺序编写数组元素,我遇到了这个例子

template <class T>
void reverse(T arr[], int size)
{
if (size>=2)
{
swap(arr[0],arr[size-1]);
reverse(arr+1,size-2);
}
}

我不明白第二行 - 为什么他们将数组的大小减去 2?如果我在“交换”函数中有 10 个元素,通过将它减去 1 来交换第一个元素和最后一个元素,然后再将它减去 2 将得到 8,但是将那个大小再次放入“交换”函数中我会得到 7 !!不应该是 8 而不是 7 吗?

最佳答案

该函数的工作原理是交换数组的第一个和最后一个元素,然后对来自 [1] 的子数组递归执行相同的操作。至 [size-2] ,像这样(该示例假定一个包含 7 个元素的数组):

|0 1 2 3 4 5 6|  <-- the array as supplied to the function
6|1 2 3 4 5|0 <-- swap [0] with [6], call recursively for 1..5
6 5|2 3 4|1 0 <-- swap [1] with [5], call recursively for 2..4
6 5 4|3|2 1 0 <-- swap [2] with [4], call recursively for 3..3
6 5 4 3 2 1 0 <-- do nothing because the size is less than 2

大小在每一步减少 2,因为 2 个元素被交换并且现在处于所需的顺序。

关于C++:数组的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41662371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com