加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 这个程序中的“返回斐波那契……”是怎么回事?

发布时间:2020-12-20 12:20:22 所属栏目:Python 来源:网络整理
导读:我有问题了解返回的fibonacci(number-1)fibonacci(number-2)在以下程序中的作用: import sysdef fibonacci( number ): if( number = 2 ): return 1 else: return fibonacci( number-1 ) + fibonacci( number-2 ) 问题是我无法想象这条线是如何工作的: retu
我有问题了解返回的fibonacci(number-1)fibonacci(number-2)在以下程序中的作用:

import sys
def fibonacci( number ):
    if( number <= 2  ):
        return 1
    else:
        return fibonacci( number-1 ) + fibonacci( number-2 )

问题是我无法想象这条线是如何工作的:

return fibonacci( number-1 ) + fibonacci( number-2 )

“fibonacci(数字-1)”和“斐波那契(数字-2)”是否同时处理?或者“斐波那契(数字-1)”是第一个被处理,然后是第二个?

我只看到处理它们最终都会返回’1’所以最后的结果我希望看到它是’1 1’=’2′

如果有人能够详细解释其计算过程,我将非常感激.

我认为这是一个非常新的问题,但我无法真正了解其过程.

解决方法

你为什么不这样做:

>>> def fibonacci(number):
...     if number < 2:
...         return number
...     print "Number is currently %d,getting fibonacci(%d)" % (number,number - 1)
...     minus_one = fibonacci(number-1)
...     print "Number is currently %d,just got fibonacci(%d),now getting fibonacci(%d)" % (number,number - 1,number - 2)
...     minus_two = fibonacci(number-2)
...     print "Number is currently %d,returning %d + %d" % (number,minus_one,minus_two)
...     return minus_one + minus_two

所以,当你打电话给斐波那契时,你会得到这样的东西:

>>> fibonacci(4)
Number is currently 4,getting fibonacci(3)
Number is currently 3,getting fibonacci(2)
Number is currently 2,getting fibonacci(1)
Number is currently 2,just got fibonacci(1),now getting fibonacci(0)
Number is currently 2,returning 1 + 0
Number is currently 3,just got fibonacci(2),now getting fibonacci(1)
Number is currently 3,returning 1 + 1
Number is currently 4,just got fibonacci(3),now getting fibonacci(2)
Number is currently 2,returning 1 + 0
Number is currently 4,returning 2 + 1
3

它仍然很复杂,但至少现在你可以看到函数正在做什么来计算你的数字.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读