GIẢI THUẬT ĐỆ QUY - Cấu trúc dữ liêu-giải thuật.(2)
Monday, November 24, 2014
I : GIẢI THUẬT ĐỆ QUY CƠ BẢN ( phần 2)
Bài
5: Viết chương trình có sử dụng hàm đệ quy tính xn.
#include<conio.h>
#include<stdio.h>
float luythua(int
x,int n)
{ 
      if(x==0) return 0;
  
   if(n==0)
return 1;
  
   if(n<0)
return (1/(luythua(x,-n-1)*x));
   
return luythua(x,n-1)*x;
}
int main()
{ 
      int x,n;
  
   printf("nhap
x va n: "); scanf("%d%d",&x,&n);
  
   printf("      %d^%d=%5.2f",x,n,luythua(x,n));
  
   getch();
}
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;
}
int 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 để đảo ngược 1 dãy kí tự nhập từ
bàn phím.
#include <stdio.h>
#include <conio.h>
#include <string.h>
void daonguoc(char
s[],int n,int
i)
{
      if(i==(n/2)) return;
      char tg=s[i];
      s[i]=s[n-i-1];
      s[n-i-1]=tg;
  
   daonguoc(s,n,i+1);
}
int main()
{ 
      char s[500];
  
   int
n;
  
   printf("nhap
xau = ");
      gets(s);
  
   n=strlen(s);
  
   printf("\n  Day ky tu vua nhap: %s",s);
  
   if(n==0)
return 0;
  
   daonguoc(s,n,0);  
  
   printf("\n  Day ky tu sau khi dao nguoc la: %s",s);
  
   getch();
}
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);
}
int 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();
}
 
 dungnv
dungnv 
 
All comments [ 0 ]
Your comments