私が受けたテストの問題は次のとおりです。
次の出力行で、最初の項からn番目の項(含む)までのフィボナッチ数列の次の項を作成します。フィボナッチ数列の最初の項と2番目の項はそれぞれ0と1であると仮定します。
フィボナッチ数列を生成するためにシェルコードをコピーしました(ここから)、条件文が必要です1<=n<=50
が、whileループの後に追加する方法がわかりません。
function fib
{
x=0
y=1
i=2
echo "Fibonacci Series up to $n terms :"
echo "$x"
echo "$y"
while [ $i -lt $n ]
do
i=`expr $i + 1 `
z=`expr $x + $y `
echo "$z"
x=$y
y=$z
done
}
r=`fib $n`
echo "$r"
ベストアンサー1
関数を中断するために、ループの前にこれを行うことができます。
if [[ $n -lt 1 ]] || [[ $n -gt 50 ]]
then
return
fi
次のように入力値を制限することもできます。
if [[ $n -lt 1 ]]
then
n=1
fi
if [[ $n -gt 50 ]]
then
n=50
fi
最初のオプションを含むコードの作業バージョンは次のとおりです。
function fib
{
x=0
y=1
i=2
n=$1
if [[ $n -lt 1 ]] || [[ $n -gt 50 ]]
then
return
fi
echo "Fibonacci Series up to $n terms :"
echo "$x"
echo "$y"
while [[ $i -lt $n ]]
do
i=`expr $i + 1 `
z=`expr $x + $y `
echo "$z"
x=$y
y=$z
done
}
r=`fib $n`
echo "$r"