gpt4 book ai didi

c++ - 数组中最大的 double

转载 作者:行者123 更新时间:2023-11-30 02:31:45 24 4
gpt4 key购买 nike

我正在尝试使用递归返回数组中最大的 double 值。

sz 是数组中元素的数量。

start 是开始当前调用的数组的索引。

这就是我目前所拥有的。为什么函数在达到“return max”行时不终止!?

double arrayMax (double arr[], int sz, int start) {
double max;

if (start == sz) {
return max;
} else {
if (arr[start] > max) {
max = arr[start];
}
arrayMax(arr, sz, start+1);
}
return max;

最佳答案

首先,您没有在第二行中分配任何最大值。这会导致问题。因为如果大小和起始整数值相同,您将尝试返回它 - 我相信当数组中只有一个元素时会发生这种情况。

所以你是说,如果我的数组只有一个元素,返回一个名为 max 的值,但没有人知道它里面是什么,这个值。 (未定义的行为)

不过,这也是错的。因为如您所见,我们正在为 max 变量赋值,但由于我们在所有调用中定义和声明它,这导致我们使用大量内存。所以更好的方法是您需要将 max 变量及其在函数中的值作为参数,这是更好的方法。

其次,你最好返回你的递归函数。因为您的递归调用中没有返回值。您需要在这两个地方执行此操作。

首先,您需要在所有函数结束时返回您的最大值,其次,您需要返回您的函数以在上述阶段进行另一个递归调用而不是函数结束。

这段代码与 ghostman 相同,所以我同意他的看法。

double arrayMax (double maxValue, double myArray[], int arraySize, int startPoint) 
{
if (startPoint < arraySize)
{
if (myArray[startPoint] > maxValue)
maxValue = myArray[startPoint];

return arrayMax(maxValue, myArray, arraySize, startPoint + 1);
}
return maxValue;
}

关于c++ - 数组中最大的 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37247310/

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