了解斐波那契数列 [英] Understanding the Fibonacci sequence

查看:69
本文介绍了了解斐波那契数列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在线发现的算法,可以计算斐波那契数列.我有点像个傻瓜,但我不知道它是如何工作的!

I have an algorithm that I found online that calculates the Fibonacci sequence. I feel a bit like a fool but I have no idea how it works!

 def fib(n)

  if n == 0 || n == 1
   return n
  end

  if n >= 2
    return fib(n-1) + fib(n-2)
  end
 end

如果我使用参数10调用该方法,为什么它不返回18?我认为这里正在进行递归,但我不知道.有人可以帮我理解吗?

If I call the method with the argument of 10 why does it not return 18? I assume some recursion is happening here but I have no idea. Can someone help me understand this?

推荐答案

根据上面的代码,让我们看一下fib(4):

Let's look at fib(4), according to your code above:

fib(4) #=> 3

通过使用以下结果来做到这一点:

It does so by using the following results:

fib(4) #calculates fib(3) + fib(2)
fib(3) #calculates fib(2) + fib(1)
fib(2) #calculates fib(1) + fib(0)
fib(1) #returns 1
fib(0) #returns 0

粗略地说,您的方法以下列方式使用上述结果 (注意:下面我使用数学符号(不是代码)和一些可疑的空格来说明用上面的结果替换了哪些位):

Crudely speaking your method uses the above results in the following fashion (note: below I am using math-notation (not code) and some dubious spacing to illustrate which bits are being substituted with the results from above):

# fib(4) =   fib(3)                       +  fib(2)
#        = ( fib(2)            + fib(1))  + (fib(1) + fib(0))
#        = ((fib(1) + fib(0))  + 1     )  + (1      + 0     )
#        = ((1      + 0     )  + 1     )  +  1
#        = ( 1                 + 1     )  +  1
#        =   2                            +  1
#        =   3

您的算法经过上述步骤.与fib(10)相似,尽管它非常麻烦,但几乎不值得手动进行.只要您掌握了基本思想,就继续前进.顺便说一下,您不是傻瓜,您只是想在某些人要做的事情上变得更好.祝你好运.

Your algorithm goes through the above steps. Similarly for fib(10), although it's hardly worth going through it manually as it can be quite cumbersome. As long as you get the basic idea, move on. And by the way you're not a fool, you're just trying to get better at something which is what many of us are trying to do as well. Good luck.

这篇关于了解斐波那契数列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆