btvn.vn
Tìm kiếm Đăng nhập

Giai thừa, lũy thừa và tổng giai thừa

Lưu trên thiết bị này
Chuyên đề lựa chọn CS: Đệ quy · Chọn bài khác

Phép nhân cần cơ sở 1

Xét n nguyên không âm; với lũy thừa, trong bài chọn $a\ne0$. Các cơ sở $0!=1$ và $a^0=1$ giữ đúng giá trị của phép tích. ```python def giai_thua(n): if n == 0: return 1 return n * giai_thua(n - 1) def luy_thua(a, n): if n == 0: return 1 return a * luy_thua(a, n - 1) ``` Ví dụ giai_thua(4)=4×3×2×1×1=24; luy_thua(−2,3)=(−2)×(−2)×(−2)×1=−8. Nếu thay cơ sở của giai thừa bằng 0, mọi tích sau đó cũng thành 0, không còn đúng giai thừa.

Mang theo giai thừa đã tính

Cần tính $1!+2!+\cdots+n!$. Trước bước k, đặt p bằng $(k-1)!$; nhân p với k để có k!, rồi cộng k! vào phần còn lại. ```python def tong_giai_thua(p, k, n): if k > n: return 0 p = p * k return p + tong_giai_thua(p, k + 1, n) ``` Lời gọi đầu là tong_giai_thua(1,1,n). Với n=4, các giá trị p được cộng là1,2,6,24, nên kết quả 33. K tăng dần nhưng số bước còn lại giảm; khi k>n thì không còn số hạng cần cộng. Không phải mọi tham số đều phải giảm mới là đệ quy đúng.

Cùng kết quả có thể tính bằng vòng lặp

Tổng giai thừa cũng có thể tính bằng cách giữ p và tổng s trong một vòng lặp. Mỗi bước cập nhật p rồi mới cộng p vào s: ```python p = 1 s = 0 for k in range(1, 5): p = p * k s = s + p print(s) ``` Đoạn này in 33 như lời gọi đệ quy với n=4. Hai cách khác cách điều khiển, không khác yêu cầu tính tổng. Với n=0, không có số hạng từ 1! trở đi nên tổng bằng 0.

Bài luyện

Cơ sở nào đúng cho hàm giai_thua tính n! với n nguyên không âm?
Chọn một đáp án

Bài luyện

Với hàm luy_thua trong bài, luy_thua(-2,3) trả về bao nhiêu?
Chọn một đáp án

Bài luyện

`tong_giai_thua(1,1,4)` trong bài trả về bao nhiêu?
Chọn một đáp án

Đang học