斐波纳契的两个版本,null表达式

时间:2016-06-27 15:10:26

标签: ruby

以下是我想到的两个版本的斐波那契

def fibonacci( n )
  return  n  if ( 0..1 ).include? n
  ( fibonacci( n - 1 ) + fibonacci( n - 2 ) )
end
puts fibonacci( 5 )


def fib(n)
  if n == (0..1)
    return n
  elsif 
    return fib(n-1) + fib(n-2)
  end
end
puts fib(5)

为什么要做第二次工作?

2 个答案:

答案 0 :(得分:2)

因为n == (0..1)是一个数字,所以永远不会满足n。范围0..1不是数字。最低要求是:

(0..1) === n

答案 1 :(得分:2)

您需要移除elsif以支持else(因为您没有案例),并且还要反转===

def fib(n)
  if (0..1) === n
    return n
  else
    return fib(n-1) + fib(n-2)
  end
end
puts fib(5)