script recursivo fibonacci linux bash
Esta é minha tentativa:
#!/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)
Eu acho que estou tendo problemas com a declaração else. Eu recebo o erroreturn: +: numeric argument required
na linha 14.
O outro problema que estou tendo é que o script não exibe nenhum número, mesmo se eu fizerecho $(fibonacci 0 2)
. Eu pensei que iria mostrar um 1 desde que eu estou retornando um 1 nesse caso. Alguém pode me dar algumas dicas sobre como fazer isso?
Depois de verificar algumas de suas respostas esta é a minha segunda tentativa .. Ele funciona corretamente, exceto que ele exibe o número de fibonacci enésimo na forma 1 + 1 + 1 + 1 etc. Alguma idéia por quê?
#!/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
Minha tentativa final:
#!/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
obrigada caras.