递归算法:求一个数组中最大元素的过程

2021-12-22  本文已影响0人  疋瓞

1、环境配置:

2、算法思想:

3、代码:

#include<iostream>//不想OI一场空,千万别用万能头
using namespace std;

int find(int l,int h,int a[]);
int min(int a,int b); 

//主函数 
int main()
{
   int A[] = {100,22,88,44,55};
   for(int i=0;i<sizeof(A)/sizeof(A[0]);i++){
    cout<<A[i]<<",";
   }
   cout<<""<<endl;
   int M = find(0,4,A);
   cout<<"M:"<<M<<endl; 
   return 0;
}


//两数找最大值
int max(int a,int b){
    if(a > b){
        return a;
    }
    else{
        return b;
    }
} 

//找最大值函数
int find(int l,int h,int a[]){
    if(l == h){
        return a[l];
    }
    else{
        return(max(a[l],find(l+1,h,a))); 
    }   
} 

4、结果展示:

找最大值结果.png

5、反思总结:


在测试当中这段代码出了问题,原因就是z的初始值问题,如果存在比a[i]小的项,那么z在for循环中会被替换,但是如果不存在比a[i]小的项,比如所有项目都是排好序的,那么for循环当中的条件语句就不会执行,z值也就不会改变,如果一开始给z赋值是0,就会出现问题。

上一篇下一篇

猜你喜欢

热点阅读