gpt4 book ai didi

c++ - 如何递归查找最大数组元素的索引

转载 作者:行者123 更新时间:2023-11-30 21:14:50 24 4
gpt4 key购买 nike

我想递归地找到数组中最大元素的索引。函数的声明可以是这样的:

int maxIndex(const int *p, int size)

我正在研究递归,我看到了一些例子,比如递归地查找最大数组元素。就这么简单:

int maxInt( const int * p, int size)   
{

if(size == 1)
return *p;

int max = maxInt(p + 1, size -1 );

if(max > *p)
return max;
else
return p[0];
}

我问自己如何找到包含数组最大元素的索引。我什至不确定这是否可能。你觉得怎么样?

最佳答案

这绝对是可能的:你需要做的就是修改代码,返回一个指向 max int 的指针,然后用 C 语言中 maxInt 的返回值减去初始指针,或者使用 std::distance在 C++ 中。

const int* maxInt( const int * p, int size)  {
if(size == 1)
return p;
int *maxPtr = maxInt(p + 1, size -1 );
if(*maxPtr > *p)
return maxPtr;
else
return p;
}

在 C 中:

int index = maxInt(array, size) - array;

在 C++ 中:

ptrdiff_t index = std::distance(maxInt(array, size), array);

注意:使用递归解决此问题只能被视为学习练习的一部分,因为堆栈溢出的可能性非常大。这同样适用于任何其他可能存在大量递归调用且没有尾调用优化的问题。

关于c++ - 如何递归查找最大数组元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662760/

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