DQ.1.2 GIẢI THUẬT ĐỆ QUY
Sunday, August 3, 2014
Bài 6: Viết chương trình
có sử dụng hàm đệ quy để xuất biểu diễn nhị phân của 1 số nguyên.
#include <stdio.h>
#include <conio.h>
int nhiphan(int n)
{ int d;
if(n==1)
{printf("%d",n); return 0;}
d=n%2; n=nhiphan(n/2);
printf("%d",d); return 0;
}
void main ()
{ int n;
printf("nhap n=
");scanf("%d",&n);
printf("\n bieu dien nhi phan cua %d
:",n);
nhiphan(n);
getch();
}
Bài
7: Viết chương trình có sử dụng hàm đệ quy để xuất ngược 1 dãy kí tự.
#include <stdio.h>
#include <conio.h>
#include <string.h>
char xuatnguoc(char
s[],int n)
{ if(n==0) return 0;
putchar(s[n-1]);
xuatnguoc(s,n-1);
return 0;
}
main ()
{ char s[50];
int n;
printf("nhap xau= ");
fflush(stdin); gets(s);
n=strlen(s);
if(n==0) return 0;
printf("\n xuat nguoc cua day ky tu %s
la: ",s);
xuatnguoc(s,n);
getch();
return 0;
}
Bài 8: Viết chương trình
nhập 1 mảng số nguyên, nhập 1 giá trị x từ bàn phím, tìm vị trí có x cuối cùng
trong mảng, sử dụng kĩ thuật đệ quy.
#include <stdio.h>
#include <conio.h>
void nhap(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{ printf("a[%d]= ",i);
scanf("%d",&a[i]);}
}
void xem(int a[],int n)
{ int i;
printf("\n xem mang vua nhap:");
for(i=0;i<n;i++)
printf("%5d",a[i]);
}
int timx( int a[], int n,
int x)
{ if(a[n]==x)
{printf("\n\n vi tri xuat hien cuoi
cung cua %d trong mang la : %d",x,n+1);
return 0;
}
if(n==0)
{ printf("\n\n gia tri %d khong xuat
hien trong mang",x);
return 0;
}
return timx(a,n-1,x);
}
void main()
{ int a[50],n,x;
printf(" nhap so luong phan tu cua mang
n = ");
scanf("%d",&n);
if(n<=0) printf("so luong phan tu
ban nhap ko hop le!");
else
{ printf(" nhap x = ");
scanf("%d",&x);
nhap(a,n);
xem(a,n);
timx(a,n-1,x);
}
getch();
}
Bài 9: Viết chương trình
nhập 1 ma trận vuông các số nguyên, nhập 1 giá trị x. Tìm vị trí <dòng –
cột> có x. Sử dụng kĩ thuật đệ quy.
#include <stdio.h>
#include <conio.h>
void nhap( int a[][50],int
n)
{ int i,j,tg;
if (n<=0) printf(" so hang so cot
ban nhap khong hop le!");
else
{ for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ printf("a[%d][%d] = ",i,j);
scanf("%d",&tg);
a[i][j]=tg;
}
printf("\n\n");
}
}
void xem( int a[][50],int
n)
{ int i,j;
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
void timx( int a[][50],
int i, int n, int x)
{ if(a[i][n]==x)
{ printf("\n vi tri xuat hien : Hang
%d - Cot %d",i+1,n+1);
return ;
}
if (n<0) return ;
timx(a,i,n-1,x);
}
void main()
{ int a[50][50],n,x,i=0;
printf("nhap so hang so cot n= ");
scanf("%d",&n);
nhap(a,n);
xem(a,n);
printf("\n nhap x = ");
scanf("%d",&x);
for(i=0;i<n;i++) timx(a,i,n-1,x);
getch();
}

All comments [ 0 ]
Your comments