这个算法的问题在哪里?我觉得会数组越界,求解
越界
而且貌似你的算法逻辑是错的,你这个函数名是max应该是求数组最大的数,但是你的逻辑求的是数组最后两位数
谁大,因为你只是比i与i+1,谁大就赋值给number,比如我有一个数组,10,3,4,5,如果用你的算法,不考虑
越界问题,就逻辑来讲,最后输出的会是5,而不是这个最大的10
i<n,i最大为n-1,arr[i+1]就为arr[n]就越界了
max(arr,4);
//数组越界
下次提问题记得贴代码 别用图片。 初始化arr[4] 的值是7 你arr[5]的值是多少? 你比较的最后一次是arr[4]和arr[5];
for循环里i<n,那i+1=n,数组就越界了
讲道理,我没有看到max有返回值啊,怎么编译通过的
我怎么觉得函数return都没有
number初始化为0,
number=number<arr[i]?arr[i]:number;
然后return number;还有数组越界的问题
#include
int max(int arr[],int n);
int main()
{
int m;
int arr[5] = {10,5,3,6,7};
m=max(arr, 5);
printf("Max number %d\n",m);
return 0;
}
int max(int arr[],int n)
{
int number = arr[0];
for (int i=0;i {
if(i==n-1){
break;
}
int temp = (arr[i]>arr[i+1])? arr[i]:arr[i+1];
if(temp > number){
number = temp;
}
}
return number;
}
其实为了算法的健壮性,还应该做一下,数组判空,长度范围验证等,不太想写,就这样吧,直接粘贴到IDE里运行就可以