Skip to main content

SỐ 128A, Hồ Tùng Mậu, Mai Dịch, Cầu giấy, Hà Nội

Search form

Trang chủ
  • Trang chủ
  • Giới thiệu
    • Lịch sử hình thành
    • Thành tích tiêu biểu
    • Giảng viên
    • Cơ sở vật chất
  • Đào tạo dài hạn
  • Đào tạo ngắn hạn
    • Lập trình Frontend ReactJS
    • Lập trình Python
    • Lập trình Web PHP FullStack
    • Lập trình Android
    • Lập trình Java Web FullStack
    • Lập trình Front-End với Angular
    • Lập trình APPLICATION VỚI ASP.NET MVC WEB API
    • Lập trình ASP.NET CORE với Web API & Angular
    • Kiểm thử phần mềm Tester
  • Tin tức
    • Sự kiện
    • Tin đào tạo
  • Sinh viên
    • Sinh viên tiêu biểu
  • Thư viện
    • Tin lập trình
    • Tin đồ họa
    • Đồ án sinh viên
  • Quan hệ doanh nghiệp
    • Các doanh nghiệp liên kết
  • Liên hệ
  • Tuyển sinh 2022
Đệ quy trong Python - Vũ khí bậc nhất của lập trình viên Python
  • Trang chủ
  • Thư viện
  • Tin lập trình
Đệ quy trong Python - Vũ khí bậc nhất của lập trình viên Python
02 Dec

Đệ quy trong Python - Vũ khí bậc nhất của lập trình viên Python

By t3h 0 Comments

Đệ quy là một trong những yếu tố cần thiết trong lập trình với Python. Tuy nhiên đây không phải là một kiến thức dễ hiểu. Qua bài viết này, T3H xin giới thiệu với bạn về Python Recursion, hay còn gọi là đệ quy trong Python.

 

Đệ quy trong Python là gì?

Đệ quy xảy ra khi một hàm hoặc thuật toán gọi chính nó. Đệ quy là một phương pháp giải quyết vấn đề liên quan đến việc chia nhỏ lặp đi lặp lại một vấn đề thành một ví dụ nhỏ hơn của cùng một vấn đề. Lập trình viên sẽ giải quyết từng lớp của vấn đề cho đến khi đạt được một vấn đề đủ nhỏ để có thể giải quyết một cách dễ dàng. Đệ quy thường thực hiện thông qua một hàm đệ quy.

Chúng ta có thể tìm hiểu khái niệm đệ quy bằng cách sử dụng ví dụ cổ điển về tìm giai thừa của một số. Giai thừa của một số là tích của tất cả các số nguyên lớn hơn 1 và nhỏ hơn hoặc bằng số đó.

Ví dụ: giai thừa của 4 là 4 * 3 * 2 * 1.

Vì vậy, về cơ bản, đối với bất kỳ số nguyên không âm N nào, giai thừa của N = N * giai thừa của (N - 1)

>>> Xem thêm: Docstring trong Python - Tìm hiểu về Docstring trong Pythn

Hàm đệ quy trong Python

Trong Python, chúng ta biết rằng một hàm có thể gọi các hàm khác. Thậm chí có thể cho hàm tự gọi. Các loại cấu trúc này được gọi là các hàm đệ quy. Vì vậy, nếu chúng ta có một hàm để tính giai thừa của một số, giả sử là giai thừa (n) , dựa trên thảo luận ở trên, chúng ta có thể nói,

giai thừa (n) = n * giai thừa (n - 1)

Hình ảnh sau đây cho thấy hoạt động của một hàm đệ quy được gọi recurse.

Ví dụ về hàm đệ quy trong Python

Ví dụ về hàm đệ quy trong Python

Sau đây là một ví dụ về một hàm đệ quy để tìm giai thừa của một số nguyên.

Giai thừa của một số là tích của tất cả các số nguyên từ 1 đến số đó. Ví dụ, giai thừa của 6 (được ký hiệu là 6!) Là 1 * 2 * 3 * 4 * 5 * 6 = 720.

>>> Tham khảo: Khóa học lập trình Python

Ví dụ về đệ quy trong Python

def factorial(x):

    """This is a recursive function

    to find the factorial of an integer"""

    if x == 1:

        return 1

    else:

        return (x * factorial(x-1))

num = 3

print("The factorial of", num, "is", factorial(num))

Đầu ra

Giai thừa của 3 là 6

Trong ví dụ trên, factorial() là một hàm đệ quy vì nó gọi chính nó. Khi chúng ta gọi hàm này với một số nguyên dương, nó sẽ gọi một cách đệ quy chính nó bằng cách giảm số lượng.

Mỗi hàm nhân số với giai thừa của số bên dưới nó cho đến khi nó bằng một. Cuộc gọi đệ quy này có thể được giải thích theo các bước sau.

factorial(3)          # 1st call with 3

3 * factorial(2)      # 2nd call with 2

3 * 2 * factorial(1)  # 3rd call with 1

3 * 2 * 1             # return from 3rd call as number=1

3 * 2                 # return from 2nd call

6                     # return from 1st call

Hãy xem một hình ảnh cho thấy quy trình từng bước của những gì đang diễn ra:

Ví dụ về đệ quy

Ví dụ về quy trình đệ quy trong Python

Làm việc của một hàm giai thừa đệ quy

Đệ quy của chúng ta kết thúc khi số lượng giảm xuống 1. Đây được gọi là điều kiện cơ sở.

Mọi hàm đệ quy phải có một điều kiện cơ sở để dừng đệ quy hoặc nếu không hàm gọi chính nó vô hạn.

Trình thông dịch Python giới hạn độ sâu của đệ quy để giúp tránh đệ quy vô hạn, dẫn đến tràn ngăn xếp. 

Theo mặc định, độ sâu tối đa của đệ quy là 1000. Nếu vượt qua giới hạn, nó dẫn đến RecursionError. Hãy xem xét một điều kiện như vậy.

def recursor():

    recursor()

recursor()

Output

Traceback (most recent call last):

  File "<string>", line 3, in <module>

  File "<string>", line 2, in a

  File "<string>", line 2, in a

  File "<string>", line 2, in a

  [Previous line repeated 996 more times]

RecursionError: maximum recursion depth exceeded

Ưu điểm và nhược điểm cả Đệ quy

Ưu điểm của Đệ quy

- Các hàm đệ quy làm cho mã trông sạch sẽ và thanh lịch.

- Một nhiệm vụ phức tạp có thể được chia thành các bài toán con đơn giản hơn bằng cách sử dụng đệ quy.

- Việc tạo trình tự với đệ quy dễ dàng hơn so với việc sử dụng một số phép lặp lồng nhau.

Nhược điểm của Đệ quy

- Đôi khi logic đằng sau đệ quy rất khó theo dõi.

- Cuộc gọi đệ quy rất tốn kém (không hiệu quả) vì chúng chiếm nhiều bộ nhớ và thời gian.

- Các hàm đệ quy rất khó gỡ lỗi.

Kết luận:  Đệ quy là một hàm quan trọng trong Python. Bài viết trên đã giải thích đệ quy trong Python là gì cùng các ví dụ và ưu nhược điểm của đệ quy. Hy vọng bạn có thể áp dụng các kiến thức về đệ quy trong lập trình. Muốn thành thạo Python và các ngôn ngữ lập trình khác. Đừng quên tham khảo các khóa học lập trình tại T3H bạn nhé!

Nguồn: programiz, techvidvan

 

  • t3h's blog
HỌP TỔ CHUYÊN MÔN LẬP TRÌNH DÀI HẠN
May 28,2022
VIỆN CÔNG NGHỆ THÔNG TIN T3H VÀ TRƯỜNG CAO ĐẲNG KỸ THUẬT - MỸ NGHỆ VIỆT NAM TỔ CHỨC LỄ KÝ KẾT HỢP TÁC CHIẾN LƯỢC ĐÀO TẠO NHÂN LỰC NGÀNH CNTT CHẤT LƯỢNG CAO
May 19,2022
T3H ĐỒNG HÀNH CÙNG DIRECTION TRONG CHUỖI SỰ KIÊN LAYERS 5
Mar 28,2022
VIỆN CÔNG NGHỆ THÔNG TIN T3H ĐỒNG HÀNH CÙNG TÂN SINH VIÊN VỚI CHƯƠNG TRÌNH MÁY TÍNH CHO EM
Sep 28,2021
HỌC VIÊN T3H TỰ TIN BẢO VỆ ĐỒ ÁN CUỐI KHÓA TRƯỚC DOANH NGHIỆP
Sep 18,2021
Hơn 1.1 triệu lao động thiếu việc làm do ảnh hưởng của COVID 19
Sep 10,2021
VIỆN CÔNG NGHỆ THÔNG TIN T3H THÀNH CÔNG TỔ CHỨC MEETING CHÀO MỪNG TÂN SINH VIÊN CNTT CLC K35
Sep 08,2021
70 CHỈ TIÊU BỔ SUNG: CƠ HỘI CUỐI CÙNG ĐỂ TRỞ THÀNH TÂN SINH VIÊN T3H
Sep 04,2021
Lao động ảnh hưởng do dịch bênh Covid
Dưới tác động của Covid 19, nhiều sinh viên hoang mang không biết học gì để có việc làm
Aug 21,2021
Lập trình Frontend ReactJS
Lập trình ASP.NET CORE với Web API & Angular
Khóa học lập trình Python
Khóa học Lập trình Python Django Fullstack
Lập trình Front-End với Angular
Lập trình Web application với ASP.NET MVC Web API
Khóa học kiểm thử phần mềm Tester
Lập trình Java Web FullStack
Lập trình Web PHP FullStack
Lập trình ứng dụng mobile android
Lập trình Android

T3h đã cho tôi những trải nghiệm mới mẻ, đặc biệt là giúp tôi được thử thách và chứng tỏ bản thân mình. Nếu được chọn lại, tôi chắc chắn vẫn sẽ chọn là sinh viên T3h!!!

(Sinh viên lớp: K28DH) 

Lê Hồng Nhung
Designer - Công ty công nghệ Lê Nam

Môi trường năng động, các bạn sinh viên nhiệt tình. Không có nhiều khoảng cách giữa sinh viên và giảng viên

(Sinh viên lớp: K28DH) 

Lê Duy Ngọc
Developer .Net - Tập đoàn Đại Việt

Môi trường học tập tốt, một số thầy cô giáo giảng dạy rất có tâm, nhiệt tình với sinh viên. Sinh viên sau khi hoàn thành khóa học cũng dễ dàng tìm kiếm được công việc phù hợp.

(Sinh viên lớp: K29C _ DH1507) 

Đỗ Thị Hải Hậu
Phụ trách Model 3D - Công ty GDL

T3H là một mái trường rất đáng yêu, bạn bè đáng yêu, đến thầy cô cũng đang yêu nốt

(Sinh viên lớp: K29A1_DH1507) 

Phan Tiến Dũng
Designer - Công ty Hatch

Thật may mắn khi thầy cô giáo, anh chị Hội Sinh viên rất nhiệt tình, giúp đỡ chúng mình. T3H như là ngôi nhà thứ 2 của mình vậy đó. 

(Sinh viên lớp: K29A_DH1507) 

Nguyễn Thị Phương Thủy
Designer - Công ty tranh 3D

T3H thật sự là 1 gia đình, mọi người đều sẵn sàng dậy cho nhau 1 điều gì đó, một môi trường mà mọi người đều sẵn sàng chia sẻ và học hỏi lẫn nhau (Sinh viên lớp: K29A1_DH1507) 

Lê Trung Kiên
Trưởng ban thiết kế - Công ty Skynetone Việt Nam

Một môi trường hoàn toàn năng động và có ứng dụng thực tế hơn rất nhiều ngôi trường khác.       (Sinh viên lớp: K29A_DH1507)

Nguyễn Thị Bích Thảo
Chuyên viên diễn hoạt Animation - Công ty CP Global Dream Lad – Tổ chức giáo dục Hoa Kỳ.

T3H là nơi tôi được sống trọn với những đam mê, những sở thích, là nơi tôi có thể khám phá được những khả năng của bản thân. Tất cả là nhờ sự tận tâm, tận tình từ các thầy cô, anh chị, bạn bè. T3H đã thực sự trở thành mái nhà thứ 2 của tôi!!!

Nguyễn Mạnh Tiền
Cán bộ phòng Đào tạo Hitech Việt Nam

Đề tài Project java android xuất xắc, sinh viên tiêu biểu T3H - Framgia Vietnam nhận ngay trong hội đồng bảo vệ đồ án cuối khóa

Phạm Trung Đoan
FPT Software, Framgia Vietnam

"Tôi học ở T3h với những thầy cô nhiệt tình , quan tâm lo lắng cho Sinh viên. Môi trường năng động, bạn bè hòa đồng vui vẻ. Các bạn hãy đến với T3H Hà Nội để trải nghiệm nhé"

NGUYỄN VĂN DŨNG
Lớp K30A1DH

"Dẫu tưởng rằng T3h sẽ giống những trường đại học khác, khô khan và chỉ biết đến bản thân. Nhưng không khi đến đây và học tập rồi hoạt động em mới hiểu tại sao lại gọi là T3h family', những chiến binh hết mình với học tập"

Nguyễn Thảo Quỳnh
K29A1-DH1507

"Kiến thức, những người bạn lầy lội, những giảng vui tính là thứ mà tôi có được tại T3H. Nơi đây chính là cây cầu nối giữa tôi với niềm đam mê của mình về CNTT"

Nguyễn Tiến Tân
K30A4DH

"Môi trường học năng động trẻ chung, giáo viên rất nhiệt tình hướng dẫn, support đồ án cho sinh viên"

Nguyễn Minh Lân
K30A3DH

 "Khi học tập ở T3H, tôi đã bổ sung cho mình được rất nhiều kiến thức để vận dụng công việc tốt hơn và định hướng được nghề nghiệp. Giảng viên rất nhiệt tình, nhiều kinh nghiệm, giúp đỡ tôi rất nhiều trong quá trình học. Cảm ơn T3H" 

PHẠM TRUNG ĐOAN
Làm việc tại Samsung Electronic Việt Nam

"Thầy cô giảng viên và anh chị khóa trên rất thân thiện và tận tâm. Họ sẵn sàng, khi bạn cần giúp về vấn đề kĩ thuật hay học tập của bạn. Đây là điều em thích nhất ở T3H"

Đỗ Quang Linh
K30A3DH

T3H là ngôi nhà thứ hai của tôi, môi trường thoải mái, bạn bè thân thiện, thầy cô tâm huyết. Nơi đây đã cho tôi nhiêu bài học quý giá, nhiều kỉ niệm đẹp. Cám ơn T3H, tình yêu tuổi trẻ của tôi!.

VŨ THỊ QUỲNH
Designer tại Hitech Việt Nam

Nơi tôi cảm nhận được sự yêu thương, nhiệt huyết của các thầy cô. Nơi đã cho tôi cơ hội được phát triển, nơi giúp tôi trường thành, nơi cho tôi cuộc sống và sự nghiệp như ngày hôm nay.

Nguyễn Văn Thành
Designer tại Topica Edtech Group

Môi trường học tập thoải mái, thầy cô dễ gần, dễ tiếp xúc, kiến thức sát với thực tế. Nhà trường luôn luôn tạo nhiều điều kiện cho sinh viên phát triển!

Doãn Trọng Tài
TP Công nghệ cty D&D Việt Nam

Thầy cô nhiệt tình và tâm huyết với sinh viên. Các anh chị sinh viên có tinh thần giúp đỡ các em khóa dưới. Môi trường thoải mái, và cho sinh viên cơ hội phát triển.

Trần Thị Hoa
Hội sinh viên T3H

T3H nơi tôi cảm nhận được sự gần gũi, thân thương, là cái nôi đã giúp tôi trưởng thành như ngày hôm nay. Từ một sinh viên "KHÔNG BIẾT GÌ" về đồ họa, giờ tôi có thể tự tin mà nói rằng : I AM A PROFESSIONAL DESIGNER với công việc và mức lương tôi hằng mơ ước!

Phạm Ánh Duyên
Designer of HONG HA PRINTING .,JSC

"Trường luôn tạo điều kiện học tập tốt nhất cho sinh viên, các giảng viên thì nhiệt tình, tận tâm với sinh viên, hỗ trợ sinh viên hết mình! Ngoài việc học trên trường, hội sinh viên còn tổ chức ra nhiều chương trình, nhiều sự kiện để khuấy động phong trào trong sinh viên"

Nguyễn Thị Thu Hà
Thiết kế 2D - Công ty CP BĐS Rbland

T3H là nơi tôi được sống trọn với những đam mê, những sở thích, là nơi tôi có thể khám phá được những khả năng của bản thân. Tất cả là nhờ sự tận tâm, tận tình từ các thầy cô, anh chị, bạn bè. T3H đã thực sự trở thành mái nhà thứ 2 của tôi!!!

Nguyễn Mạnh Tiền
Cán bộ phòng Đào tạo Hitech Việt Nam

Đề tài Project java android xuất xắc, sinh viên tiêu biểu T3H - Framgia Vietnam nhận ngay trong hội đồng bảo vệ đồ án cuối khóa

Phạm Trung Đoan
FPT Software, Framgia Vietnam

Thầy cô giảng viên và anh chị khóa trên rất thân thiện và tận tâm. Họ sẵn sàng, khi bạn cần giúp về vấn đề kĩ thuật hay học tập của bạn. Đây là điều em yêu hích nhất ở T3H"

Lê Trung Kiên
K29DH

"T3H là một môi trường giáo dục thực tế nhất mà em từng biết. Đã đào tạo thẳng vào chuyên ngành giúp cho sinh viên phát huy được hết các khả năng về chuyên ngành của mình"

Phạm Hồng Hà
K30A1DH
  • HỌP TỔ CHUYÊN MÔN LẬP TRÌNH DÀI HẠN
    May 28,2022
  • VIỆN CÔNG NGHỆ THÔNG TIN T3H VÀ TRƯỜNG CAO ĐẲNG KỸ THUẬT - MỸ NGHỆ VIỆT NAM TỔ CHỨC LỄ KÝ KẾT HỢP TÁC CHIẾN LƯỢC ĐÀO TẠO NHÂN LỰC NGÀNH CNTT CHẤT LƯỢNG CAO
    May 19,2022
  • T3H ĐỒNG HÀNH CÙNG DIRECTION TRONG CHUỖI SỰ KIÊN LAYERS 5
    Mar 28,2022
  • VIỆN CÔNG NGHỆ THÔNG TIN T3H ĐỒNG HÀNH CÙNG TÂN SINH VIÊN VỚI CHƯƠNG TRÌNH MÁY TÍNH CHO EM
    Sep 28,2021
  • HỌC VIÊN T3H TỰ TIN BẢO VỆ ĐỒ ÁN CUỐI KHÓA TRƯỚC DOANH NGHIỆP
    Sep 18,2021

VIỆN CÔNG NGHỆ THÔNG TIN T3H

Tầng 05 - Nhà A - Trường Cán bộ quản lý văn hóa thể thao và du lịch

128A - Hồ Tùng Mậu - Mai Dịch - Cầu Giấy - Hà Nội

Trụ sở: Số nhà 55, ngõ 97/24/1 đường Văn Cao, Liễu Giai, Ba Đình, Hà Nội

 

  • GIỚI THIỆU
  • Viện Công nghệ thông tin T3H
  • Tại sao chọn T3H
  • Hỏi đáp

ĐÀO TẠO FULLSTACK

Web PHP Fullstack

Java Web Fullstack

Python Django

ASP.Net MVC web API  

FONTEND - MOBILE -TESTER

Frontend ReactJS

Frontend Angular

Java/Kotlin Android

Kiểm thử phần mềm

LIÊN HỆ

THPT: 0966 095 680 (Miss Ngân)

Sinh viên Đại học - Đi làm: 0972.056.536 (Mrs Phượng)

Copyright © 2021 t3h.edu.vn. All rights reserved.