|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int max(int array[], int n);
- int max(int array[], int n){
- if(n == 0){
- return array[0];
- }else{
- return max(array, n-1) > array[n] ? max(array, n-1) : array[n];
- }
- }
- int main(){
- int array[] = {6 , 4, 5, 67, 98, 1, 3, 0, 2};
- int length = sizeof(array) / sizeof(array[0]);
- max(array, length);
- putchar('\n');
- return 0;
- }
复制代码
@FishC,我的代码哪里有问题啦?
你好!你的代码有几个问题需要注意。
首先是函数 `max()` 的声明和定义,传入数组的参数类型应该是 `int array[]` 而不是 `int array`。此外,`int n` 表示数组的长度,但在递归调用时传递的是 `n-1`,这样会导致数组越界访问。需要将递归调用中的 `array` 和 `n-1` 分别改为 `array+1` 和 `n`。最终的返回语句可以简化为 `return max(array+1, n) > array[0] ? max(array+1, n) : array[0];`。具体修改后的代码如下:
- #include <stdio.h>
- int max(int array[], int n);
- int max(int array[], int n){
- if(n == 1){
- return array[0];
- }else{
- return max(array+1, n-1) > array[0] ? max(array+1, n-1) : array[0];
- }
- }
- int main(){
- int array[] = {6, 4, 5, 67, 98, 1, 3, 0, 2};
- int length = sizeof(array) / sizeof(array[0]);
- int result = max(array, length);
- printf("The maximum number in the array is: %d\n", result);
- return 0;
- }
复制代码
这样就可以正确地找到数组中的最大值了。希望能对你有所帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|