フィボナッチ数列、標準入力は自然数 1<=n<=50 でなければなりません。 BASHから

フィボナッチ数列、標準入力は自然数 1<=n<=50 でなければなりません。 BASHから

私が受けたテストの問題は次のとおりです。

次の出力行で、最初の項から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"

おすすめ記事