鱼C论坛

 找回密码
 立即注册
查看: 2543|回复: 6

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

[复制链接]
发表于 2018-12-16 19:33:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

    if  n < 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-16 20:33:52 | 显示全部楼层
本帖最后由 ba21 于 2018-12-16 20:50 编辑

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

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

print(fab(100))
   
  b, a = a+b, b #交换,简单写成这样就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 22:31:23 | 显示全部楼层
ba21 发表于 2018-12-16 20:33
这也太复杂了吧。从哪里抄来的代码?

def fab(n):

从书上抄来的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 22:39:08 | 显示全部楼层

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

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

n -= 1 等于 n=n-1 , 假如n=100 就是从100倒数数到0. 计数用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 22:40:57 | 显示全部楼层

亲,表示看不懂你写的这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 23:37:54 | 显示全部楼层
这个是迭代的算法,如果没有n-=1,那你不是在循环里出不来了吗
a3等于几都可以,反正a3后面都是要重新赋值的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 11:01:47 | 显示全部楼层
因为当n=1,n=2时,返回的值为 a3 所以 a3=1
n-=1计算重第二个月起过了几个月,当n-2<=0时跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表