Fibonacci number

From Director Online Wiki
Jump to: navigation, search
--/******
--* FIBONACCI NUMBER
--****
--* @Param  : 'x'      <Integer>
--* @Return : 't_list' <LinearList>
--* @Note   : hidden param 't_list'
--***/
on mFibonacci( x )
  --
  if Not(IntegerP(x)) then return( Void )
  x = max(min(x, 45), 0) -- the MaxInteger !
  --
  if ListP(_movie.param(_movie.paramCount()) then
    t_list = _movie.param(_movie.paramCount())
  else
    t_list = [1, 1, [0]]
  end if
  --
  if (x <= 0) then
    return( t_list[3] )
  end if
  --
  t_list[3].add(t_list[1])
  --
  t_list[1] = bitXor(t_list[1] + t_list[2], t_list[2])
  t_list[2] = bitXor(t_list[2] , t_list[1])
  t_list[1] = bitXor(t_list[1] , t_list[2])
  --
  return( mFibonacci(x, t_list) )
end
--*/