1 재귀 적 방법의 배열에서 최대 요소 찾기 :
#INCLUDE <STDIO.H> INT MAX ( int로 A, INT의 B)을 { 경우 (A> B)가 반환 단계; 다른 반환 B; } INT FMAX ( INT [η], int로 Ⅰ) { 경우 (I == 1 ) 복귀 A [ 0 ]; 다른 창 MAX (FMAX (a, I- 1 )와, [I- 1 ]); } INT 의 main () { int로 [η] = { 1 , 32 , 34 , 56, 12 }; INT maxNum = FMAX (a, 5 ); 의 printf ( " %의 D " , maxNum); }
테스트 결과 :
재귀 적 관점에서 (1) :
문제의 각 재귀 시간 스케일은 재귀 재귀 수출 될 때까지 1 씩 감소.
파티션 분석 방법의 관점에서 (2) :
FMAX는 (a는 [] 난에서 INT INT) 문제 침입입니다 FMAX를 (a, I-1) 및 [I-1], 문제의 시간 스케일 직접 해결 호출 될 수 MAX 함수로 감소 될 때까지.
도 2에서, X = A + BI 및 Y = C + 디 개의 복소수가 제공된다. XY = (AC-BD) + (광고 + BC) 내가 설계, 알고리즘은 세 개의 곱셈을 해결하기 : XY 복잡한 제품은 네 개의 곱셈, 즉를 완료 할 수 있습니다
= I 인덱스 I,되도록 [I]이있는 경우 (3)는, 재귀 적으로 순차적으로 배열에 저장된 서로 다른 정수 n을 구비한다. 이 인덱스를 찾기위한 알고리즘 O (log2n) 시간을 디자인합니다.
void position(int a[],int l,int r){ int mid; while(l<r){ mid=(l+r)/2; if(a[mid]==mid) return mid; if(a[mid]<mid) l=mid+1; if(a[mid]>mid) r=mid-1; } rerurn -1;//未找到元素 }