题目:用递归的方法求一个数组中的最大元素。


思路:用一个变量m存储方法执行过程中的最大值,并不断更新,用一个变量n作为指针不断地枚举数组中的每一位,并与递归边界值和数组[m]对比.


示例代码:(仅作参考)

class Max{
    public static void main(String[] args)
    {
        int[] arr = {1,2,3,6,5};
        max(arr,0,1);//开始我们假设第一个数arr[0]为最大值,指针从第二个开始递归
    }
    public static void max(int[] arr,int m,int n)
    {
        if(n == arr.length)//递归执行判断边界
        {
            System.out.println(arr[m]);
        }
        else
        {
            if(arr[m] >= arr[n])
                max(arr,m,n+1);
            else
            {
                m = n;//更新m,在方法执行过程中时刻保持当前最大值,直到数组最后个元素判断结束后在调用递归就符合n==数组长度,打印并结束
                max(arr,m,n+1);
            }    
        }
    }

}

以上仅为简洁代码,如有需要可以换成集合类型,或者加入Scanner并用for来对数组初始化输入赋值,等等等,但基本思想不变。

点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论