论坛首页 编程语言技术论坛

斐波那契数列

浏览 1788 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-09-26   最后修改:2009-12-09
說明
Fibonacci為1200年代的歐洲數學家,在他的著作中曾經提到:「若有一隻免子每個月生一隻小免子,一個月後小免子也開始生產。起初只有一隻免子,一個月後就有兩隻免子,二個月後有三隻免子,三個月後有五隻免子(小免子投入生產)......」。

如果不太理解這個例子的話,舉個圖就知道了,注意新生的小免子需一個月成長期才會投入生產,類似的道理也可以用於植物的生長,這就是Fibonacci數列,一般習慣稱之為費氏數列,例如以下:
1、1 、2、3、5、8、13、21、34、55、89......

def fibonacci(n)
  unless n>=0
    puts "请输入一个正数!"
  end

  if(n==0 ||n==1)
   1
  else
    fibonacci(n-1)+fibonacci(n-2)
  end

end
n=gets.to_i
puts fibonacci(n)


上面是之前写的,用的是递归,说实话,递归看起来简单,但是不是很好理解(可能是因为我的理解能力差的缘故)我觉得还是递推更加直观一些,于是写了下面的代码:
def fab(n)
  a,b=1,1
  print a,",",b,","
  for i in 3..n-1
    b,a=a+b,b
    print b,','
  end
  print a+b,"\n"
end
fab(10)
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics