LoginSignup
0

More than 5 years have passed since last update.

フィボナッチ数

Last updated at Posted at 2015-12-15

コマンドプロンプト(cmd.exe)Advent Calendar 2015

の 12/4 の記事を読んでおもしろかったので、昼やすみを利用して自分なりに書きなおしてみました。

fibonacci.bat
@echo off

setlocal
  set n=%~1

  if "%n%" == "" (
    >&2 echo %~n0 NUMBER
    exit /b 1
  )

  set /a a=1,b=0,s=0
  :BOL
    if %n% equ 0 echo 0 & goto :EOF
    if %n% equ 1 echo %a% & goto :EOF
    set /a n-=1
    set /a a=a+b
    set /a b=a-b
  goto BOL
endlocal

ちなみに

普通に作ってしまうと再帰呼び出しになってしまってアレなので

も書いてみたのですが

fibonacci.bat
@echo off

setlocal
  set n=%~1

  if "%n%" == "" (
    >&2 echo %~n0 NUMBER
    exit /b 1
  )

  call :fibonacci %n%

  echo %ERRORLEVEL%

  exit /b 0
endlocal
goto :EOF

:fibonacci
setlocal
  set n=%~1

  if %n% equ 0 exit /b 0

  if %n% equ 1 exit /b 1

  set /a n1=%n%-1
  call :fibonacci %n1%
  set r1=%ERRORLEVEL%

  set /a n2=%n%-2
  call :fibonacci %n2%
  set r2=%ERRORLEVEL%

  set /a r=%r1%+%r2%
  exit /b %r%
endlocal
goto :EOF

指定する値が 10 くらいだと数秒で終了しますが、 20 では…(ぜんぜんダメですね)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0