카테고리 없음
[리눅스/쉘] bash로 피보나치 수열 구하기
미친토끼
2021. 3. 1. 23:50
#!/bin/sh
# 피보나치 수열 구하기
# 함수 fibonacci()는 인자 하나를 취해 그것의 수열값을 리턴한다.
# 메인에서는 이 함수를 여러번 호출한다.
function fibonacci() {
# 지역변수에 첫번째 인자를 받는다.
local number=$1
one=1
two=1
three=0
if [[ ( $number == 1) || ($number == 2) ]];
then
three=1;
else
for (( i=3; i<=number; i++))
do
three=$(($one+$two))
one=$two
two=$three
done
fi
echo "$three"
}
# 필자의 컴퓨터에서는 92번째까지만 제대로 나오고 93번째부터는 오버플로 발생.
MAX_NUM=92
for ((i=1; i<=$MAX_NUM; i++))
do
result=$(fibonacci $i)
printf "$i 번째 피보나치 수열값: $result\n"
done
#result=$(fibonacci 60)
#echo "$result"
--------실행 결과-----------
(base) [Don@localhost BASH]$ sh fibo.sh
1 번째 피보나치 수열값: 1
2 번째 피보나치 수열값: 1
3 번째 피보나치 수열값: 2
4 번째 피보나치 수열값: 3
5 번째 피보나치 수열값: 5
6 번째 피보나치 수열값: 8
7 번째 피보나치 수열값: 13
8 번째 피보나치 수열값: 21
9 번째 피보나치 수열값: 34
10 번째 피보나치 수열값: 55
........
86 번째 피보나치 수열값: 420196140727489673
87 번째 피보나치 수열값: 679891637638612258
88 번째 피보나치 수열값: 1100087778366101931
89 번째 피보나치 수열값: 1779979416004714189
90 번째 피보나치 수열값: 2880067194370816120
91 번째 피보나치 수열값: 4660046610375530309
92 번째 피보나치 수열값: 7540113804746346429