TRNG I HC CÔNG NGH THÔNG TI N THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc hành v đ quy
THC HÀNH MÔN TIN HC I CNG
Bài 9. THC HÀNH V QUY
I. TÓM TT BÀI THC HÀNH
1.1. Yêu cu lý thuyt
Sinh viên đã đc trang b kin thc hàm và con tr.
1.2. Ni dung
¬ Vit đc các chng trình sau:
̇ Truyn tham s là tham bin, tham tr
̇ Bài toán tính X
n
̇ Bài toán tháp Hà Ni, Fibonaci
¬ Chú ý:
̇ Tham s : tham bin, tham tr
̇ Debug đ qui
II. THAO TÁC TNG BC
2.1.
Chng trình tính dãy Fibonaci
2.1.1.
iu kin yêu cu
̇ Nhp vào s nguyên N, tính giá tr Fibo(N)
2.1.2.
Thut toán
̇ Nhp giá tr N
̇ Tính giá tr F(N) = F(N-1) + F(N-2) nu N > 2
̇ Xut kt qu
2.1.3.
Cài đt
#include <stdio.h>
#include <conio.h>
//khai bao ham
int Fibo(int);
//dinh nghia ham
void main()
{
int n;
1
TRNG I HC CÔNG NGH THÔNG TIN THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc hành v đ quy
//nhap gia tri can tinh
printf("\nNhap gia tri can tinh : ");
scanf("%d", &n);
int kq = 0;
//kiem tra dieu kien n
if (n <= 2 && n > 0)
{
kq = 1;
}
else
{
kq = Fibo(n);
}
//xuat ket qua
printf("ket qua F(%d) : %d", n, kq);
getch();
}
int Fibo(int n)
{
int kq = 0;
if (n <= 2 && n > 0)
{
kq += 1;
}
else
{
kq = Fibo(n-1) + Fibo(n-2);
}
return kq;
}
2.1.4.
Kt qu biên dch và chy chng trình
2
TRNG I HC CÔNG NGH THÔNG TIN THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc hành v đ quy
¬ Lu ý
̇ Chy tay bài toán Fibonaci đ hiu rõ thut toán đ quy
2.2. Chng trình tính X
n
2.2.1.
iu kin yêu cu
̇ Nhp vào s nguyên X, n, tính giá tr X
n
2.2.2.
Thut toán
̇ Nhp giá tr X
̇ Nhp giá tr n
̇ Tính giá tr X
n
= X * X
n-1
nu n > 0
̇ Xut kt qu
2.2.3.
Cài đt
#include
<stdio.h>
#include <conio.h>
//khai bao ham
int LuyThua(int, int);
//dinh nghia ham
void main()
{
int X, n;
//nhap gia tri can tinh
printf("\nNhap gia tri X can tinh luy thua: ");
scanf("%d", &X);
3
TRNG I HC CÔNG NGH THÔNG TIN THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc hành v đ quy
printf("\nNhap gia tri so mu: ");
scanf("%d", &n);
int kq = 0;
//kiem tra dieu kien n
if (n == 0)
{
kq = 1;
}
else
{
kq = LuyThua(X, n);
}
//xuat ket qua
printf("ket qua %d^%d = %d", X, n, kq);
getch();
return 0;
}
int LuyThua(int X, int n)
{
int kq = 0;
if (n == 0)
{
kq = 1;
}
else
{
kq = X * LuyThua(X, n - 1);
}
return kq;
}
2.2.4.
Kt qu biên dch và chy chng trình
4
TRNG I HC CÔNG NGH THÔNG TIN THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc hành v đ quy
¬ Lu ý
̇ Chy tay bài toán X
n
đ hiu rõ thut toán đ quy
̇ Áp dng gii các bài toán n!, p(n) = 1
3
+ 2
3
+ + n
3
III. BÀI TP LÀM TI LP
̇ Vit chng trình nhp/xut mng 2 chiu có s dng tham s
̇ Tính X
n
̇ Tính n!
̇ Tính p(n) = 1
3
+ 2
3
+ + n
3
̇ Tính USCLN(a, b)
̇ Vit chng trình tính s Fibonaci
̇ Bài toán tháp Hà Ni (*)
IV. BÀI TP V NHÀ
̇ Bài toán tháp Hà Ni (*)
V. CÁC CÂU HI THNG GP
̇ Debug hàm đ quy
̇ Khi nào dùng hàm đ quy
̇ …
5