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();
}
Chia sẻ bài viết ^^
Other post

All comments [ 0 ]


Your comments