rekursives Fibonacci-Linux-Bash-Skript

Das ist mein Versuch:

#!/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)

Ich glaube, ich habe Probleme mit der else-Anweisung. Ich bekomme den Fehlerreturn: +: numeric argument required in Zeile 14.

Das andere Problem, das ich habe, ist, dass das Skript keine Zahlen anzeigt, selbst wenn ich es tueecho $(fibonacci 0 2). Ich dachte, es würde eine 1 anzeigen, da ich in diesem Fall eine 1 zurückgebe. Kann mir jemand ein paar Tipps geben, wie das geht?

Nach dem Auschecken einiger Ihrer Antworten ist dies mein zweiter Versuch. Es funktioniert ordnungsgemäß, außer dass die n-te Fibonacci-Zahl in der Form 1 + 1 + 1 + 1 usw. angezeigt wird. Irgendwelche Ideen warum?

#!/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

Mein letzter Versuch:

#!/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

Danke Jungs.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage