Author Archive

[Đệ quy] – Các thuật toán đệ quy (Recursive)

Thuật toán đệ quy được dùng hiệu quả trong việc giải các bài toán mà có thể biểu diễn dưới dạng các đối tượng, các hàm mà có thể gọi lại chính nó. Sử dụng các thuật toán đệ quy sẽ giúp cho cách giải bài toán trở nên ngắn gọn và dễ hiểu hơn.

Ví dụ:

  • Tính n! sẽ viết f(n+1) = f(n) * (n+1)
  • Tính tổng n số nguyên đầu tiên s(n+1) = s(n) + (n+1)
  • Tính số tiếp theo của dãy fibonaci: f(n+1) = f(n) + f(n-1)

Việc sử dụng các thuật toán đệ quy sẽ giúp cho việc giải các bài toán trở nên ngắn gọn và dễ hiểu. Tuy nhiên, các thuật toán đệ quy ngốn khá nhiều bộ nhớ đệm khi thực hiện nên thỉnh thoảng gây ra lỗi tràn ngăn xếp (stack) rất khó chịu nên một số ngôn ngữ không khuyến khích dùng đệ qui hay nói cách khác nó không thiết kế tối ưu cho các thuật toán đệ quy.

Tuy vậy, một số ngôn ngữ lập trình xem việc xử lý đệ quy như thế mạnh của mình như Python chẳng hạn. Do vậy, việc sử dụng đệ quy hay không còn tùy thuộc vào bài toán và ngôn ngữ lập trình mà bạn sử dụng.

Các bước xử lý bài toán đệ quy

Lấy ví dụ xử lý hàm tính n! với n là biến không âm ta thực hiện như sau:

  • Bước cơ sở: Xác định giá trị của hàm tại vị trí mà ta xác định được giá trị. Ví dụ ở bài toán tính n! là lúc n=0, khi đó f(0) =1
  • Bước đệ quy: xác định cách tính cho hàm ở bước n bất kỳ. Ví dụ trong bài toán tính n! lúc đó chúng ta có f(n) = f(n-1)*n

Trong phần này, tôi sẽ trình bày các bài toán như:

  •  Tính n!
  •  Tính và in ra n số trong dãy Fibonacci
  •  Tìm kiếm phần tử trên mảng đã sắp xếp (Binary Search)

Ngoài ra, có rất nhiều bài toán khác theo dạng đệ quy mà bạn có thể tham khảo thêm. Một trong những bài toán nổi tiếng thế giới là bài Tháp Hà Nội mà bạn nên tham khảo.

Bài 1: Viết chương trình để nhận một số n, tính và in ra n!.

Phân tích và tìm cách giải

  • Đầu vào: nhập vào giá trị n
  • Đầu ra: giá trị n!
  • Cơ sở lý thuyết:
    • – Bước cơ sở: f(0) =1
    • – Bước đệ qui: f(n)= f(n-1)*n

Cách biểu diễn thuật toán đệ quy

Trong trường hợp này, tôi sử dụng ngôn ngữ giả.

Declare int n

Input n

If n<0

   Print ‘n phai lon hon hoac bang 0 ’

Else

   Print Factorial(n)

 

Factorial(n){

   If n=0

     Return 1

   Else

     Return n* Factorial(n-1)

}

Bài tiếp:  Thuật toán in dãy Fibonacci

Bài trước: Thuật toán sắp xếp danh sách đối tượng

TUYỂN 10 BUSINESS ANALYST

Đà Nẵng | #fpt _ software đang tuyển dụng 10 #Junior #Business _ Analyst onboard trong tháng 10 & Jun
Tên miền dự án: Du lịch
Khách hàng: Tiếng Nhật (nói tiếng Anh)
Phạm vi thanh toán: $ 500-1,000
✵ Yêu cầu:
• Có niềm đam mê mãnh liệt để làm việc trong lĩnh vực CNTT với tư cách là một Nhà phân tích
• Có kiến thức cơ bản về quy trình phát triển phần mềm & Vai trò Phân tích Kinh doanh: phải làm gì? kỹ năng nào cần?
• Có kỹ năng thiết yếu: phân tích phát triển phần mềm, khả năng hiểu mục tiêu kinh doanh và dịch chúng thành các yêu cầu cụ thế.
• Tự tin & thông thạo tiếng Anh giao tiếp
• Có kỹ năng thuyết trình & giao tiếp tốt.
Rất vui khi có được
• Bằng cử nhân Khoa học Máy tính, IT, thương mại điện tử, Kinh tế, Du lịch hoặc các chuyên ngành liên quan.
• Căn cứ IT
• Kỹ năng tiếp theo: Các khái niệm phân tích, Máy chủ MS SQL hoặc Oracle, UML, Microsoft Visio hoặc bất kỳ công cụ thiết kế GUI nào khác.
• Kinh nghiệm làm việc trong lĩnh vực Du lịch
✵ JD: trong bình luận
✵ Liên hệ:
Nếu bạn muốn trở thành một phần của chúng tôi, vui lòng gửi CV đến: honght@fsoft.com.vn
✵ Nhắn tin để biết thêm thông tin.
– Skype: fsoft_honght
– Zalo/Tel: 0967 166 294

𝑭𝒖𝒍𝒍 𝑺𝒕𝒂𝒄𝒌 𝒂𝒍𝒍 𝒍𝒆𝒗𝒆𝒍 PHP

𝑫𝒐 𝒏𝒉𝒖 𝒄𝒂̂̀𝒖 𝒎𝒐̛̉ 𝒓𝒐̣̂𝒏𝒈 𝒅𝒖̛̣ 𝒂́𝒏 𝒄𝒐̂𝒏𝒈 𝒕𝒚 đ𝒂𝒏𝒈 𝒐𝒑𝒆𝒏 𝒄𝒂́𝒄 𝒗𝒊̣ 𝒕𝒓𝒊́ 𝒔𝒂𝒖:
✅𝑭𝒖𝒍𝒍 𝑺𝒕𝒂𝒄𝒌 𝒂𝒍𝒍 𝒍𝒆𝒗𝒆𝒍
👉 Yêu cầu có kinh nghiệm với PHP laravel, VueJS
👉 Làm việc trong môi trường sử dụng Tiếng Anh
👉 Mức lương mở tùy theo năng lực chắc chắn sẽ ko làm bạn thất vọng
✅𝑷𝒓𝒐𝒋𝒆𝒄𝒕 𝒎𝒂𝒏𝒂𝒈𝒆𝒓
👉 Chỉ cần từ 2 năm kinh nghiệm là có thể cân được dự án
👉 Tiếng Anh là bắt buộc có thêm tiếng Nhật càng tốt nếu không có cũng không sao
👉NET Salary up to 2000$, PVICare & Trip hàng năm dành cho cả gia đình bạn.
✅Ngoài ra D-Soft vẫn Welcome #DevOps all level
=====================================
Để nhận JD và biết thêm thông tin vui lòng inbox hoặc liên hệ:
📩Mail: hr@d-soft.com.vn
📞Hotline: 0972 335 131
🆂 Skype: live:nthanh1187

Front-end Developer (HTML/ CSS/ JavaScript)_Da Nang

Các bạn Front-end Developer ơi,
Công ty IF Việt Nam đnag tuyển ứng viên đây ạ. ❤
Apply CV qua mail: luu-nth@if-vietnam.com
Front-end Developer (HTML/ CSS/ JavaScript)_Da Nang
Các bạn nộp CV mình sẽ nhắn đi PV sớm nhé ạ ❤
Cảm ơn mọi người !!

Tuyển Java, PHP cho dự án siêu khủng

“Vừa chốt deal một dự án tăng size khủng, kèm theo một số dự án con tiềm năng, tuyển gấp gãy cho anh” Và thế là…Job lại về ào ạt 😎😎
Ib tâm sự kín thôi anh em 🤫
Skype: hotran.cfl

Tuyển 8 PHP

❤ Covid đến, nhân viên không lo bị giảm lương, ngược lại Công ty NITRO TECH ASIA còn đồng loạt tăng lương cho toàn thể nhân viên để tri ân, cùng nhau vượt qua mùa dịch. Tuyệt vời.😍
Nhân đây, Công ty cũng đang open 8 vị trí PHP từ 1 năm kinh nghiệm, lương thưởng và chế độ rất hấp dẫn. 🥳
Email nhận CV: hoatc@nitrotech.asia
Skype: conghoatch
SĐT: Mr.Hoa: 0901.744.555

[Đệ quy] – Thuật toán in dãy số Fibonacci

Thuật toán in dãy số Fibonacci đã được trình bày trong phần thuật toán số học. Tuy nhiên, đây cũng là bài toán có thể biểu diễn bằng phương pháp đệ quy, nên trong bài học này chúng ta sẽ biểu diễn lại bài toán này bằng thuật toán đệ quy.

Yêu cầu

Viết chương trình để nhận một số n sau đó in ra chữ số thứ n trong dãy Fibonacci.

Phân tích và tìm cách giải

  • Đầu vào: nhập vào giá trị n
  • Đầu ra: In ra n số Fabonacci đầu tiên
  • Cơ sở lý thuyết:
    • – Dãy fibonacci: 1,1,2,3,5,8,13,21,34,55…
    • – Bước cơ sở: f(0) =1, f(1) = 1
    • – Bước đệ qui: f(n)= f(n-1) + f(n-2)

 

Cách biểu diễn thuật toán in dã số Fibonacci

Trong trường hợp này, tôi sử dụng ngôn ngữ giả.

Declare int n

Input n

If n<0

   Print ‘n phai lon hon hoac bang 0 ’

Else

   Print Fibonacci (n)

 

Fibonacci (n){

   If n=0 or n=1

      Return 1

   Else

      Return Fibonacci (n-1) + Fibonacci (n-2)

}

 

Bài tiếp: Thuật toán tìm kiếm nhị phân

Bài trước: Các thuật toán đệ quy

[Đệ quy] – Thuật toán tìm kiếm nhị phân (Binary Search)

Thuật toán tìm kiếm nhị phân (Binary Search) được sử dụng để tìm kiếm một giá trị trong một danh sách đã sắp xếp. Thuật toán này cài đặt theo phương pháp đệ quy sẽ giảm số phép toán so sánh và làm cho thuật toán chạy nhanh hơn. Trong trường hợp tệ nhất thì độ phức tạp của thuật toán sẽ là O(log n), với n là số phần tử của mảng.

Cách thực hiện

Ví dụ chúng ta có một mảng gồm các phần tử 1 2 4 6 7 8 9 10. Bây giờ chúng ta nhập vào một số nào đó. Ví dụ số cần tìm x=9, thuật toán sẽ làm như sau:

  • Lấy giá trị chính giữa của dãy số y so sánh với x, nếu x nhỏ hơn thì tìm trong danh sách từ phần tử đầu tiên đến trước phần tử y, ngược lại thì tìm từ phần tử ngay sau y đến phần tử cuối cùng.
  • Lặp lại bước trên cho đến khi gặp được x.

Thuat toan tim kiem nhi phan

Đã tìm được x ở vị trí số 7.

Yêu cầu

Viết chương trình để cài đặt thuật toán tìm kiếm nhị phân (Binary Search) để tìm kiếm giá trị trong một mảng đã sắp xếp.

Phân tích và tìm cách giải

  • Đầu vào: Một mảng số đã sắp xếp, giá trị x cần tìm.
  • Đầu ra: In ra vị trí tìm được trong mảng
  • Phân tích:
    • – Hàm sử tìm kiếm BinarySearch(a[], start, end)
    • – Tính k=(start + end)/2
    • Bước cơ sở:
    • If a[k] = x -> return k //tìm thấy
    • If k=end -> return -1 //không tìm thấy
    • Bước đệ qui:
    • If a[k] <x</li
    •    BinarySearch(a[], start, k-1)
    • Else
    •    BinarySearch(a[], k+1, end)

Cách biểu diễn thuật toán tìm kiếm nhị phân (Binary Search)

Trong trường hợp này, tôi sử dụng ngôn ngữ giả.

Declare int a[] ={1, 2, 4, 6, 7, 8, 9, 10}

Input x

Binary(a[],x,start,end){

   Int k = (start + end)/2

   If a[k]=x then return k  //Tìm thấy tại vị trí k

   If k=end then return -1 // Không tìm thấy

   If a[k]>x then

      Binary(a[],x,start,k-1)

   Else

      Binary(a[],x,k+1,end)

}

Trên đây là một số thuật toán cơ bản, hay gặp nhằm giúp các bạn mới học thuật toán dễ dàng tiếp cận. Trong thời gian tới tôi sẽ tiếp tục cập nhật những thuật toán ở cấp độ khó hơn để các bạn có cơ hội rèn luyện sâu hơn.

Bài trước: Thuật toán in dãy Fibonacci

[𝐓𝐮𝐲ể𝐧 𝐃ụ𝐧𝐠 𝐈𝐧𝐭𝐞𝐫𝐧/𝐅𝐫𝐞𝐬𝐡𝐞𝐫 𝐏𝐇𝐏/𝐑𝐮𝐛𝐲]

📌𝘉ạ𝘯 𝘤ó 𝘮𝘶ố𝘯 𝘵𝘳ở 𝘵𝘩à𝘯𝘩 𝘮ộ𝘵 𝘵𝘳𝘰𝘯𝘨 𝘯𝘩ữ𝘯𝘨 𝘭ậ𝘱 𝘵𝘳ì𝘯𝘩 𝘷𝘪ê𝘯 𝘗𝘏𝘗/ 𝘙𝘶𝘣𝘺 𝘵à𝘪 𝘯ă𝘯𝘨 𝘵ạ𝘪 𝘚𝘶𝘯*? 𝘏ã𝘺 đọ𝘤 𝘬ỹ 𝘯𝘩ữ𝘯𝘨 𝘵𝘩ô𝘯𝘨 𝘵𝘪𝘯 𝘣ê𝘯 𝘥ướ𝘪 để 𝘣𝘪ế𝘵 đượ𝘤 𝘚𝘶𝘯* 𝘰𝘧𝘧𝘦𝘳 𝘤𝘩𝘰 𝘣ạ𝘯 𝘯𝘩ữ𝘯𝘨 𝘤ơ 𝘩ộ𝘪 𝘨ì 𝘯𝘩é!

💡 𝒀𝒆̂𝒖 𝒄𝒂̂̀𝒖:
◽ 𝗙𝗿𝗲𝘀𝗵𝗲𝗿: Sinh viên sắp tốt nghiệp, hoặc đã tốt nghiệp 𝗰ó 𝘁𝗵ể đ𝗶 𝗹à𝗺 𝗳𝘂𝗹𝗹-𝘁𝗶𝗺𝗲
◽ 𝗜𝗻𝘁𝗲𝗿𝗻: Sinh viên sắp tốt nghiệp chuyên ngành CNTT các trường đại học (deadline 𝟲/𝟮𝟬𝟮𝟮 tốt nghiệp) đ𝗶 𝗹à𝗺 𝗳𝘂𝗹𝗹-𝘁𝗶𝗺𝗲 𝗵𝗼ặ𝗰 𝗽𝗮𝗿𝘁-𝘁𝗶𝗺𝗲
◽ Nắm vững kiến thức nền tảng và hiểu rõ các khái niệm: HTML/CSS; Database; OOP; Giải thuật…
◽ Có hiểu biết về một trong các ngôn ngữ lập trình: Java, PHP, Ruby, C#, Python… và sẵn sàng chuyển qua học chuyên sâu về PHP/ Ruby
💡 𝙌𝙪𝙮𝙚̂̀𝙣 𝙇𝙤̛̣𝙞:
◾ Lương khởi điểm hấp dẫn, tương xứng năng lực:
– 𝗙𝗿𝗲𝘀𝗵𝗲𝗿: 8.000.000 – 10.500.000
– 𝗜𝗻𝘁𝗲𝗿𝗻: 4.200.000 + trợ cấp đi lại (Tính trên giờ làm việc thực tế)
◾ Được làm việc và hướng dẫn bởi các Sun* Coders với nhiều năm kinh nghiệm;
◾ Được làm việc trong môi trường trẻ trung năng động, ưu tiên vào việc sáng tạo và phát triển;
◾ Được sử dụng các tiện ích phong phú: khu ăn uống (trà, cafe,…),vui chơi (CLB game, trí tuệ,…),…
◾ Được tham gia các hoạt động của công ty: Sinh nhật, đá bóng, thể thao, vui chơi giải trí,…
◾ Có lộ trình phát triển nghề nghiệp Career Path rõ ràng, được tạo điều kiện để phát triển nghề nghiệp theo năng lực và mong muốn cá nhân
◾ Được hưởng chế độ đào tạo công ty: nâng cao khả năng chuyên môn, kỹ năng mềm,…
——-
👉Xem thêm thông tin chi tiết và mô tả công việc tại đây:
– 𝗙𝗿𝗲𝘀𝗵𝗲𝗿: http://bit.ly/3rvU3MW
– 𝗜𝗻𝘁𝗲𝗿𝗻: https://bit.ly/3vXaMuW
👉 Gửi CV đến: le.phan.thanh.thao@sun-asterisk.com
* Ngoài ra thì mình cũng có tuyển QA, BrSE và IT Comtor nên bạn nào cảm thấy phù hợp thì ping FB mình gửi JD nha 🙂
* Hỗ trợ phỏng vấn và làm việc remote trong thời gian tình hình dịch bệnh diễn biến căng thẳng nhé mọi người 🙂

Toàn vị trí hot

Về với Axon Active nhen mọi người ơi, phỏng vấn nhanh gọn lắm luôn, offer thì cực khủng và dự án thì miễn bàn vì quá xịn xò nè…
  • Java Developers
  • Frontend Developers
  • PHP Developers
  • Nodejs Developers
  • Manual Testers
Ping Xoan ngay, apply ngay, nhận offer liền tay nhé ❤
Have a nice day mn! ☘☘☘

Đối tác tuyển dụng