Professional Documents
Culture Documents
Cacdang Dequy
Cacdang Dequy
o Ñeä qui phi tuyeán: Lôøi goïi ñeä qui xuaát hieän trong voøng laëp
<Kieåuhaøm> <teânhaøm>(ñoáisoá)
{
if( ñieàukieändöøngñuùng)
return <giaùtrò>;
else
{
for…
<goïi ñeä qui>;
return <giaùtrò>;
}
}
Ví duï: Tính:
x(0)=1 vôùi n=0;
x(n)=n2x(0)+(n-1)2+…..+12x(n-1) vôùi n>0;
…..
int x(int n)
{
if(n==0) return 1;
else
{ int t=0;
for( int i=0; i<n;i++)
t=t+(n-i)*(n-i)*x(i);
return t;
}
}
o Ñeä qui hoã töông: Hai haøm goïi laãn nhau.
Haøm1( )
{
<goïi Haøm2( )>
}
Haøm2( )
{
<goïi Haøm1( )>
}
Ví duï: Tính x(n) vaø y(n)
x(0)=y(0)=1
x(n)=x(n-1)+y(n-1)
y(n)=n2x(n-1)+y(n-1)
…..
int x(int n)
{
if(n==0) return 1;
else return x(n-1) + y(n-1);
}
int y(int n)
{
if(n==0) return 1;
else return n*n*x(n-1) + y(n-1);
}
• Quicksort
Caøi ñaët:
void Sort(int *a,int left,int right)
{
int i=left,j=right,x=a[(left+right)/2];
if(left>=right) return;
while (i<j)
{
while (i<j&&a[i]<x) {i++;ss++;}
while (i<j&&a[j]>x) {j--;ss++;}
if (i<j)
{ if(a[i]==a[j]) goto xong;
Hoanvi(a[i],a[j]);
xong:
i++;
j--;
}
}
if (j<i) swap(&i,&j);
Sort(a,left,i);
i= i = = left ? i+1 : i;
Sort(a,i,right);
}
void QuickSort(int *a,int n)
{
Sort(a,0,n-1);
}
{*******
void QuickSort(int a[ ], int l, int r)
{
int i,j;
int x;
x=a[(l+r)/2]; //choïn phaàn töû x laø khoùa
i=l; j=r;
do{
while(a[i]<x) i++;
while(a[j]>x) j--;
if(i<=j){
Hoanvi(a[i], a[j]);
i++; j--;
}
}while(i<j);
//tieáp tuïc phaân hoaïch caùc daõy con baèng phöông phaùp ñeä quy
if(l<j) QuickSort(a,l,j);
if(i<r) QuickSort(a,i,r);
}
o