一道C语言题(利用减半递推技术,写出长度为N的数组中最大元素的递归算法。设n=r的k次方,其k>=1)

一道C语言题(利用减半递推技术,写出长度为N的数组中最大元素的递归算法。设n=r的k次方,其k>=1),第1张

#include <iostream>

#include <stdlib.h>

#include <time.h>

using namespace std

int half(int s,int e,int a[])

{

int m,m1,m2

if (s==(e-1)) m=a[s]

else

{

m1=half(s,(s+e)/2,a)

m2=half((s+e)/2,e,a)

m=(m1>m2?m1:m2)

}

return m

}

int main()

{ int a [100],max=0

srand((unsigned)time(NULL))

for(int i=0i<100i++)

{

a[i]=100*rand()/RAND_MAX

}

for(int j=0j<100j++)

{

cout<<a[j]<<'\t'

}

cout<<endl

max=half(0,99,a)

cout<<"减半递推求得最大值为"<<max<<endl

return 0

}

南航四院12级请勿直接复制

以下的程序,n为非0任意自然数

#include"stdio.h"

int max(int a[],int left,int right)

{int mid=(left+right)/2

if(mid==left)return a[left]>a[right]?a[left]:a[right]

else return max(a,left,mid)>max(a,mid+1,right)?max(a,left,mid):max(a,mid+1,right)

}

int main()

{int i,a[12]={34,12,76,98,43,45,79,62,96,91,30,84}

for(i=0i<12i++)printf("%d ",a[i])

printf("\nmax=%d\n",max(a,0,11))

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12148859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存