m0_62833534 2021-12-07 13:04 采纳率: 100%
浏览 41
已结题

为什么这个程序运行异常

题目编号:Exp06-Enhance01,GJBook3-10-05

题目名称:最大元素

题目描述:编写程序,用递归方法求解长度为n的整型数组中最大元素值。

输入:第一行输入一个正整数n(0<n≤100),表示数组的元素个数;第二行依次输入n个整数,作为数组的元素。

输出:最大元素的值。

样例1:

输入:
10
9 8 7 6 5 4 3 2 1 0
输出:
9
样例2:

输入:
10
0 1 2 3 4 5 6 7 8 9
输出:
9

我的答案

#include <stdio.h>
#include <stdlib.h>
int max(int a1[],int len1)
{
    if(len1>1)
    {if((max(a1,len1-1))>a1[len1-1])
        return max(a1,len1-1);
    else
        return a1[len1-1];
    }
    else
        return a1[len1-1];
}

int main()
{
    int a[200],n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    int len=i;
    int max1=max(a,len);
    printf("%d",max1);
    return 0;
}


运行结果及报错内容 :

调用程序运行服务异常

这是为什么呢,以及如何解决?

谢谢!

  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-12-07 13:13
    关注

    递归超时了吧,n=100的时候,递归耗时较大

    int max(int a1[], int len1) {
        if(len1 == 1)
            return a1[0];
        int m = max(a1,len1-1);
        if(m > a1[len1 - 1])
            return m;
        else return a1[len1-1];
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月7日
  • 已采纳回答 12月7日
  • 创建了问题 12月7日

悬赏问题

  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元