recursive fibonacci linux bash script
To jest moja próba:
#!/bin/bash
function fibonacci(){
first=$1
second=$2
if (( first <= second ))
then
return 1
else
return $(fibonacci $((first-1)) ) + $(fibonacci $((second-2)) )
fi
}
echo $(fibonacci 2 0)
Myślę, że mam problem z instrukcją else. Dostaję błądreturn: +: numeric argument required
na linii 14.
Innym problemem, który mam, jest to, że skrypt nie wyświetla żadnych liczb, nawet jeśli to robięecho $(fibonacci 0 2)
. Pomyślałem, że wyświetli 1, ponieważ w tym przypadku zwracam 1. Czy ktoś może mi dać kilka wskazówek, jak to osiągnąć?
Po sprawdzeniu niektórych twoich odpowiedzi jest to moja druga próba. Działa poprawnie, z wyjątkiem tego, że wyświetla n-tą liczbę fibonacciego w postaci 1 + 1 + 1 + 1 itd. Jakieś pomysły dlaczego?
#!/bin/bash
function fibonacci(){
first=$1
second=$2
if (( first <= second ))
then
echo 1
else
echo $(fibonacci $((first-1)) ) + $(fibonacci $((first-2)) )
fi
}
val=$(fibonacci 3 0)
echo $val
Moja ostatnia próba:
#!/bin/bash
function fibonacci(){
first=$1
if (( first <= 0 ))
then
echo 1
else
echo $(( $(fibonacci $((first-1)) ) + $(fibonacci $((first-2)) ) ))
fi
}
val=$(fibonacci 5)
echo $val
dzięki kolesie.