方塘半亩 发表于 2018-12-16 19:33:47

关于斐波那契数列中计算兔子的数目

在讲斐波那契数列里面算兔子数的这个函数中,为什么要先假设a3 = 1啊?还有就是将a1 = a2,a2=a3,为什么要写一个 n-=1?是从后往前试算吗?
def fab(n)
   a1 = 1
   a2 = 1
   a3 = 1

    ifn < 1:
      print ("输入有误!")
      return -1

    while (n-2) > 0:
       a3 = a1 + a2
       a1 = a2
       a2 = a3
       n -= 1
    return a3

result = fab(20)
if result != -1:
   print(“总共有%d 对小兔子诞生!” % result)

ba21 发表于 2018-12-16 20:33:52

本帖最后由 ba21 于 2018-12-16 20:50 编辑

这也太复杂了吧。从哪里抄来的代码?

def fab(n):
    a = 1
    b = 1
    f =
    while n:      
      b, a = a+b, b
      f.append(b)
      n-=1
    return f

print(fab(100))
   
b, a = a+b, b #交换,简单写成这样就可以了

方塘半亩 发表于 2018-12-20 22:31:23

ba21 发表于 2018-12-16 20:33
这也太复杂了吧。从哪里抄来的代码?

def fab(n):


从书上抄来的代码

ba21 发表于 2018-12-20 22:39:08

方塘半亩 发表于 2018-12-20 22:31
从书上抄来的代码

a3 = 1 # 初始化一个值,在你这段码也可以不要。
a3 = a1 + a2 #后面这里直接赋值就可以了

a3 = a1 + a2
       a1 = a2
       a2 = a3
把a1跟a2的数据进行对换而已。

n -= 1 等于 n=n-1 , 假如n=100 就是从100倒数数到0. 计数用

方塘半亩 发表于 2018-12-20 22:40:57

方塘半亩 发表于 2018-12-20 22:31
从书上抄来的代码

亲,表示看不懂你写的这个

李胖虎 发表于 2018-12-20 23:37:54

这个是迭代的算法,如果没有n-=1,那你不是在循环里出不来了吗
a3等于几都可以,反正a3后面都是要重新赋值的

学Java 发表于 2018-12-24 11:01:47

因为当n=1,n=2时,返回的值为 a3 所以 a3=1
n-=1计算重第二个月起过了几个月,当n-2<=0时跳出循环
页: [1]
查看完整版本: 关于斐波那契数列中计算兔子的数目