?? 遞歸法在n個數(shù)中找個小于0的最大數(shù).txt
字號:
#include<stdio.h>
#include<stdlib.h>
#define N 10
//非遞歸法在N個數(shù)中找出小于0的最大數(shù)
void fin(int a[],int n){
int i,min0max=0;
for(i=0;i<N;i++)
if(a[i]<0){
min0max=a[i];
break;
}
for(i=0;i<N;i++){
if(a[i]<0&&a[i]>min0max)min0max=a[i];
}
printf("非遞歸法 the number required is %d\n",min0max);
}
//遞歸法在N個數(shù)中找個小于0的最大數(shù)
int f(int a[],int little,int high){
int max1,max2,mid,min0max;
if(little==high){
if(a[little]<0)return a[little];
else return 0;
}
if(little+1==high){
if((a[little]*a[high])>0){
if(a[little]>0&&a[high]>0)return 0;
else if(a[little]<a[high])min0max=a[high];
else min0max=a[little];
}
if((a[little]*a[high])<=0){
if(a[little]<0)min0max=a[little];
else min0max=a[high];
}
return min0max;
}
else {
mid=(little+high)/2;
max1=f(a,little,mid);
max2=f(a,mid+1,high);
if(max1*max2==0){
if(max1<0)return max1;
else return max2;
}
else if(max1<=max2)return max2;
else return max1;
}
}
void main(){
int a[N]={2,1,3,5,-4,6,-2,8,-6,-3};
int min0max;
min0max=f(a,0,N-1);
printf("遞歸法 the number required is %d\n",min0max);
fin(a,N);
system("pause");
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -