# GÓC SÁNG TẠO > Khu vực lập trình > Pascal/Delphi/Kylix >  Một số bài tập về đệ quy!

## nam123

1/ Sử dụng đệ quy viết chương trình tính tổng các số tự nhiên liên tiếp được mô tả dưới dạng hàm đệ quy như sau:


```
S(n) = S(n-1) + n
```

2/ Cân đĩa
Cho một cái cân gồm 2 đĩa cân và n quả cân có trong lượng là A[1],A[2],A[3]....A[n] là những số nguyên. Hãy tìm tất cả các cách đặt một số quả cân lên đĩa bên trái và lên bên đĩa bên phải sao cho cân thăng bằng.
3/ Đổi tiền lẻ
Cho m loại tiền với giá trị tự nhiên A1,A2,A3......Am và một giá trị tiền n. Viết thuật toán và chương trình để tính tất cả các cách biểu diễn n thành m loại tiền kể trên.
4/ Tìm đường
Ở một đất nước có n thành phố. Giữa các thành phố có các tuyến đường 1 chiều. Biết:
- Giữa 2 thành phố bất kỳ có thể đi đến nhau (có thể qua nhiều tuyến đường)
- Từ 1 thành phố số các đường đi ra bằng số các đường đi vào.
Lập thuật toán tìm một con đường xuất phát từ một thành phố nào đó, đi qua tất cả các tuyến đường, mỗi tuyến đường một lần, cuối cùng trở về thành phố ban đầu.
5/ Lập kế hoạch
Có n người và n công việc. Lập trình để sắp xếp mỗi người một công việc sao cho công sức bỏ ra là ít nhất.
Một người bất kỳ có thể làm được một số việc nào đó, có thể là tất cả các việc. Gọi C i j là công sức làm việc j của người i, thông tin về khả năng làm việc và công sức làm việc của mỗi người được thể hiện là một ma trận n x n. Cột thể hiện công việc, hàng thể hiện người làm việc.
Ai thấy đề mình hay thì thanks cho phát nhá!!!
Tới ngày 20/1 mà không có code thì mình sẽ post lên từng ngày mỗi ngày 1 bài[IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## samnguyen

- Cái này là quay lui em ạh . Thêm mấy cái nhánh cho chương trình chạy tốt hơn . 
- Em cần gấp không ? HSG sẽ cố gống code sớm cho em

----------


## giaitriso

Cái này cả đệ quy cả quay lui.
-----------------------------

----------


## cake1990

1./


```
var n:byte;
function gt(n:byte):qword;
begin
        if n=0 then gt:=1 
           else gt:=gt*n;
end;
BEGIN
         readln(n);
         writeln(gt(n));
         readln;
END.
```

2./ + 3./ Có code nhưng chậm. 2 bài này sử dụng phương pháp tính tổng rồi bỏ một số trường hợp vô nghiệm được không nhỉ?

----------


## thanghekhoc212

Ơ??? 3 bài code của tui đâu òy ta???

----------


## chungcuhanoi

> Ơ??? 3 bài code của tui đâu òy ta???


- Diễn đàn vừa bị sự cố nên mất bài của tất cả các thành viên trong vòng 10 ngày trước sự cố. 
- Mong bạn post lại code cho các thành viên tham khảo

----------

