Python: Đệ Quy (Recursion) - V1Study
Có thể bạn quan tâm
- Đào tạo Độ tuổi từ 5 - 11 Độ tuổi từ 12 - 17 Từ 18 tuổi
- Lập trình Python Lập trình C C++ Java C# - C Sharp Android Scratch Pascal Robot mBot
- Web ReactJS HTML5 CSS3 JavaScript Node.js JSP ASP.NET Core jQuery PHP
- FW-CMS Laravel AngularJS Flutter Magento Bootstrap VueJS CodeIgnitor WordPress Sass Drupal
- Video Video Python Video Lập trình C Video C# Video Java Video HTML5-CSS3-JavaScript Video SQL Server Video PHP Video jQuery Video Android Video C++ Video Scratch
- Video1 Video XML-JSON Video MySQL Video Excel Video Giải thuật và Lập trình Video Sức khỏe Video Drupal Video mBot Video Giáo dục - Khoa học
- Other Unity Giải thuật và lập trình Giải thuật và lập trình - C CCNA Mạng máy tính Design Patterns English Facebook SEO Git Tin học đại cương Japanese App-Uti Download
- Data SQL Server XML JSON MySQL
- News
Ngôn ngữ Python cho phép hàm gọi đến chính nó, người ta gọi phương pháp này là phương pháp đệ quy hoặc quay lui (xem thêm bài viết Đệ quy và giải thuật đệ quy).
Cú pháp:
def tên_hàm(danh_sách_tham_số): if điều_kiện_dừng_thỏa: return giá_trị else: return tên_hàm(danh_sách_đối_số) phép_toán tên_đối_số* Trong giải thuật này phải có một điều_kiện_dừng_thỏa để đệ quy kết thúc (dừng quay lui).
* phép_toán ở đây là một phép toán bất kỳ phù hợp với bài toán của bạn.
* Chương trình sử dụng đệ quy thì dễ hiểu nhưng hao tốn tài nguyên CPU, dẫn đến làm giảm thời gian chạy chương trình đi nhiều nếu số lần đệ quy của hàm lớn.
Ví dụ 1:
Tính tổng các số chia hết cho 5 nằm trong đoạn [0,N] với N được nhập từ bàn phím.
Phân tích: Điều kiện dừng thỏa ở đây ta có thể thấy được ngay là khi giá trị của đối số bằng 0 (nếu ta chạy ngược giảm dần từ N) hoặc bằng N (nếu ta chạy xuôi tăng dần từ 0). Vì chỉ tính tổng các số chia hết cho 5 nên cứ mỗi lần đệ quy thì ta lại giảm (hoặc tăng) giá trị của đối số 5 đơn vị rồi tiến hành cộng dồn.
Chương trình được viết như sau:
def tinhTong(N): if N<=0: #nếu N==0 return 0 #thì dừng đệ quy else: #nếu không thì return tinhTong(N-5) + N #tiếp tục đệ quy def main(): #tiến hành nhập N N=int(input("Mời nhập N: ")) while N<1 or N%5!=0: #N phải là từ 1 trở lên và chia hết cho 5 mới hợp lệ N=int(input("Mời nhập N: ")) print("Tổng các số từ 1 đến",N,"chia hết cho 5 là:", tinhTong(N)) #tiến hành đệ quy main()Kết quả:
Mời nhập N: 100 Tổng các số từ 1 đến 100 chia hết cho 5 là: 1050
Ví dụ 2:
Ta có thể lập trình tính giai thừa theo phương pháp đệ quy, vì n!=1*2*3*…(n-1)*n hay n!=n*(n-1)*(n-2)*…*1 --> Giá trị sau chính là giá trị trước cộng thêm 1 (hoặc là giá trị trước trừ đi 1), giá trị kết thúc =1.
Sau đây là phần demo:
def giaiThua(n): if n==0: #điều kiện dừng thỏa return 1 #vì 0!=1 nên n==0 là vị trí kết thúc của đệ quy return n*giaiThua(n - 1) #kiểu n*(n-1)*(n-2)…*1 #hoặc: giaiThua(n-1)*n với kiểu 1*2*3*…*n def main(): n=int(input("Nhập n: ")) print("Giai thừa của",n,"là", giaiThua(n)) main()Ví dụ 3:
In ra n phần tử đầu tiên của dãy Fibonanci (1 1 2 3 5 8 13 21 34 …).
Phân tích: Hai phần tử đầu tiên của dãy là hai phần tử khởi tạo (1 1), bắt đầu từ phần tử thứ ba trở đi sẽ tuân theo quy tắc là phần tử sau bằng tổng của hai phần tử ngay trước nó cộng lại (ví dụ 13=5+8). Công thức: n= (n-1) + (n-2). Như vậy có nghĩa ta sẽ sử dụng được phương pháp đệ quy vì nó tuân theo cú pháp đệ quy.
Chương trình được viết như sau:
def fibo(n): if(n==0 or n==1): #nếu là hai phần tử đầu tiên của dãy (điều kiện dừng thỏa) return 1 #thì sẽ có giá trị là 1 return fibo(n-1) + fibo(n-2) #nếu không thì tính giá trị của phần tử đó def main(): n=int(input("Nhập số phần tử cần xem của dãy Fibonacci: ")) print(n,"phần tử đầu tiên của dãy là:") for i in range(0,n): print(fibo(i)) main()Kết quả:
Nhập số phần tử cần xem của dãy Fibonacci: 10 10 phần tử đầu tiên của dãy là: 1 1 2 3 5 8 13 21 34 55
» Tiếp: List « Trước: Phạm vi của các biến Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Copied !!! Copy linkCopied link!Bạn muốn tìm kiếm điều gì?
Từ khóa » đệ Quy Trong Python Là Gì
-
Đệ Quy Trong Python - Viblo
-
Hàm đệ Quy Trong Python
-
Hàm đệ Quy Trong Python
-
Đệ Quy Trong Python - Vũ Khí Bậc Nhất Của Lập Trình Viên Python - T3H
-
Hàm đệ Quy (recursive Function) Trong Python - Góc Học IT
-
Kiểu Dữ Liệu Function Trong Python - Đệ Quy (recursion)
-
Hàm đệ Quy Trong Python | Lập Trình Từ Đầu
-
Đệ Quy Python: Hướng Dẫn đầy đủ
-
Lập Trình Python | Bài 12 (p5): Hàm đệ Quy Là Gì? Ưu điểm Và Nhược ...
-
Hàm đệ Quy Trong Python
-
Hàm đệ Quy Trong Python - Sửa Máy Nhanh
-
Thay Thế đệ Quy Bằng Vòng Lặp - TEK4
-
Một Ví Dụ đơn Giản Giải Thích Hàm đệ Quy
-
Tính Giai Thừa Trong Python - Bài Tập Python Có Lời Giải - VietTuts
-
Đệ Quy Trong Python - Python đệ Quy Là Gì
-
Bài 36 Kiểu Dữ Liệu Function Trong Python - Đệ Quy (recursion ...