Trong thế giới của lập trình và tính toán, dãy Fibonacci luôn là một chủ đề hấp dẫn. Dãy này không chỉ có giá trị trong toán học mà còn được ứng dụng rộng rãi trong lĩnh vực máy tính. Trong bài viết này, chúng ta sẽ tìm hiểu cách tính tổng của n số hạng đầu tiên của dãy Fibonacci bằng ngôn ngữ lập trình Shell.
Xem thêm:
- Thuật toán tìm ước chung lớn nhất shellscript
- Kiểm tra số nguyên tố đối xứng shell script
1. Bài toán tính tổng n số hạng đầu tiên của dãy Fibonacci
Bài toán: Lập trình shell tính tổng n số hạng đầu tiên của dãy Fibonacy, n được truyền vào dưới dạng tham số.
2. Phân tích bài toán
- Trong hàm
fibonacci
:- Khởi tạo các biến
f0
(gán bằng 0),f1
(gán bằng 1),fsum
(gán bằng 1) để lưu trữ số Fibonacci và mảngarr
để lưu trữ dãy Fibonacci. - Kiểm tra nếu
num
(số lượng số Fibonacci cần tính) bằng 1, thì hiển thị kết quả và thoát khỏi hàm. - Nếu
num
lớn hơn 1, thực hiện vòng lặp for để tínhnum
số Fibonacci đầu tiên. - Trong vòng lặp,
fn
được tính bằng tổng củaf0
vàf1
, sau đófn
được thêm vào mảngarr
, vàf0
,f1
được cập nhật để tiếp tục tính toán.
- Khởi tạo các biến
- Trong phần chính của script:
- Hiển thị thông báo để yêu cầu người dùng nhập số
n
. - Sử dụng vòng lặp
until
để đảm bảonum
phải lớn hơn 0. Nếunum
không thỏa mãn điều kiện này, script sẽ tiếp tục yêu cầu người dùng nhập lại.
- Hiển thị thông báo để yêu cầu người dùng nhập số
- Cuối cùng, gọi hàm
fibonacci
với đối sốnum
được nhập từ người dùng. Hàm này sẽ tính và hiển thị dãy Fibonacci và tổng của n số đầu tiên.
3. Code dãy số Fibonacci shellscript
#!/bin/bash fibonacci () { f0=0 f1=1 fsum=1 arr=($f0 $f1) if [ $num -eq 1 ] then echo "Tong $num so hang dau tien cua day Fibonacci la: 0" else for ((i = 2; i < $num; i++)) do fn=`expr $f0 + $f1` arr+=($fn) fsum=`expr $fsum + $fn` f0=$f1 f1=$fn done fi echo "Day so Fibonacci la: ${arr[@]}" echo "Tong $num so hang dau tien cua day Fibonacci la: $fsum" } echo "Nhập n (n > 0): " read num until [ $num -gt 0 ] do echo "Nhập n (n > 0): " read num done fibonacci $num
4. Kết quả
Ngoài ra, bạn có thể thử một số bộ test sau:
Bộ test 1:
- Nhập n = 1
- Kết quả đầu ra: “Day so Fibonacci la: 0” và “Tong 1 so hang dau tien cua day Fibonacci la: 0”
Bộ test 3:
- Nhập n = 10
- Kết quả đầu ra: “Day so Fibonacci la: 0 1 1 2 3 5 8 13 21 34” và “Tong 10 so hang dau tien cua day Fibonacci la: 88”
Bộ test 4:
- Nhập n = 20
- Kết quả đầu ra: “Day so Fibonacci la: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181” và “Tong 20 so hang dau tien cua day Fibonacci la: 10945”
Bộ test 5:
- Nhập n = 0 (làm cho người dùng nhập lại cho đến khi n > 0)
- Tiếp theo, nhập n = 7
- Kết quả đầu ra: “Day so Fibonacci la: 0 1 1 2 3 5 8” và “Tong 7 so hang dau tien cua day Fibonacci la: 20”
Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về cách tính tổng n số hạng đầu tiên của dãy Fibonacci và cách thực hiện nó bằng ShellScript. Cảm ơn các bạn đã tham khảo quản trị linux trên ttnguyen.net.
Bài viết liên quan:
một số toán tử trong shell script
vòng lặp trong shell script