Tải bản đầy đủ (.pdf) (5 trang)

Thực Hành Tin Học Đại Cương 9

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (116.05 KB, 5 trang )

TRNG I HC CÔNG NGH THÔNG TI N THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc hành v đ quy


THC HÀNH MÔN TIN HC I CNG
Bài 9. THC HÀNH V  QUY

I. TÓM TT BÀI THC HÀNH
1.1. Yêu cu lý thuyt
Sinh viên đã đc trang b kin thc hàm và con tr.
1.2. Ni dung
¬ Vit đc các chng trình sau:
̇ Truyn tham s là tham bin, tham tr
̇ Bài toán tính X
n

̇ Bài toán tháp Hà Ni, Fibonaci
¬ Chú ý:
̇ Tham s : tham bin, tham tr
̇ Debug đ qui
II. THAO TÁC TNG BC
2.1.
Chng trình tính dãy Fibonaci
2.1.1.
iu kin yêu cu
̇ Nhp vào s nguyên N, tính giá tr Fibo(N)
2.1.2.
Thut toán
̇ Nhp giá tr N
̇ Tính giá tr F(N) = F(N-1) + F(N-2) nu N > 2
̇ Xut kt 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
TRNG I HC CÔNG NGH THÔNG TIN THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc 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.
Kt qu biên dch và chy chng trình



2
TRNG I HC CÔNG NGH THÔNG TIN THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc hành v đ quy




¬ Lu ý
̇ Chy tay bài toán Fibonaci đ hiu rõ thut toán đ quy
2.2. Chng trình tính X
n

2.2.1.
iu kin yêu cu
̇ Nhp vào s nguyên X, n, tính giá tr X
n

2.2.2.
Thut toán
̇ Nhp giá tr X
̇ Nhp giá tr n
̇ Tính giá tr X
n
= X * X
n-1
nu n > 0
̇ Xut kt 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
TRNG I HC CÔNG NGH THÔNG TIN THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc 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.
Kt qu biên dch và chy chng trình

4
TRNG I HC CÔNG NGH THÔNG TIN THC HÀNH MÔN TIN HC I CNG
Khoa Khoa Hc Máy Tính Bài 9. Thc hành v đ quy



¬ Lu ý
̇ Chy tay bài toán X
n
đ hiu rõ thut toán đ quy
̇ Áp dng gii các bài toán n!, p(n) = 1
3
+ 2
3
+ + n
3

III. BÀI TP LÀM TI LP
̇ Vit chng trình nhp/xut mng 2 chiu có s dng tham s
̇ Tính X
n

̇ Tính n!
̇ Tính p(n) = 1
3
+ 2
3

+ + n
3

̇ Tính USCLN(a, b)
̇ Vit chng trình tính s Fibonaci
̇ Bài toán tháp Hà Ni (*)
IV. BÀI TP V NHÀ
̇ Bài toán tháp Hà Ni (*)
V. CÁC CÂU HI THNG GP
̇ Debug hàm đ quy
̇ Khi nào dùng hàm đ quy
̇ …


5

×