[Shell Script] Tính tổng n số hạng đầu tiên của dãy Fibonacci

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:

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ố.

Phân tích bài toán

  1. 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ảng arr để 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ính num số Fibonacci đầu tiên.
    • Trong vòng lặp, fn được tính bằng tổng của f0f1, sau đó fn được thêm vào mảng arr, và f0, f1 được cập nhật để tiếp tục tính toán.
  2. 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ảo num phải lớn hơn 0. Nếu num 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.
  3. 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.

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

Kết quả

[Shell Script] Tính tổng n số hạng đầu tiên của dãy Fibonacci

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.

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em