吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2439|回复: 11
收起左侧

[求助] Python 斐波那契数列,计算兔子总数

[复制链接]
风子是我 发表于 2020-11-2 18:59
本帖最后由 风子是我 于 2020-11-2 19:01 编辑

1.png

2.png

[Asm] 纯文本查看 复制代码
#定义fib()函数,x为形参def fib(n):
    a,b=1,1
    for i in range(3,n+1):
        a,b=b,a+b
    return b

#输入月数
n=int(input('请输入第n个月:'))

#调用fib()函数,i值为实参
for i in range(1,n+1):
    print(fib(i), end=' ')



以上代码运行结果为(以12个月为例):

请输入第n个月:12
1 1 2 3 5 8 13 21 34 55 89 144

----------------
现在我想只输出第n个月的值,代码怎么改?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

抖阴视频 发表于 2020-11-2 19:12
输出语句加个条件
if i == n
samuaicc 发表于 2020-11-2 19:15
 楼主| 风子是我 发表于 2020-11-2 19:31
本帖最后由 风子是我 于 2020-11-2 19:45 编辑

谢谢楼上的,根据楼上的思路,我改写了代码如下:

[Asm] 纯文本查看 复制代码
#定义fib()函数,x为形参
def fib(n):
    a,b=1,1
    for i in range(3,n+1):
        a,b=b,a+b
    return b
    
#输入月数
n=int(input('请输入第n个月:'))

#调用fib()函数,i值为实参
for i in range(1,n+1):
    if i==n:
        print("第",n,"个月的兔子数为:",fib(i),"对。",sep='')


完美解决,又学了一招。
无名先森。 发表于 2020-11-2 19:34
鸡兔同笼?看错题了
jy02427010 发表于 2020-11-2 19:36
你看看
month=int(input('繁殖几个月?: '))
month_1=1
month_2=0
month_3=0
month_elder=0
for i in range(month):
    month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3
print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子')
print('其中1月兔:',month_1)
print('其中2月兔:',month_2)
print('其中3月兔:',month_3)
print('其中成年兔:',month_elder)
z441511709 发表于 2020-11-2 19:38
本帖最后由 z441511709 于 2020-11-2 19:46 编辑

这特么就是考算法的问题....d1=1 d2=1  然后算出总和i=d1+d2  然后进入一个循环一直去改变一个d2变量    d2=i-d2 i=i+d2
 楼主| 风子是我 发表于 2020-11-2 19:43
jy02427010 发表于 2020-11-2 19:36
你看看
[md]```python
month=int(input('繁殖几个月?: '))

不对,12个月的结果是144对
lphgor 发表于 2020-11-2 20:17
楼主的要求,最后的循环不要了,直接print不就好了吗

[Python] 纯文本查看 复制代码
#定义fib()函数,x为形参
def fib(n):
    a,b=1,1
    for i in range(3,n+1):
        a,b=b,a+b
    return b
 
#输入月数
n=int(input('请输入第n个月:'))
 
#调用fib()函数,i值为实参
print(fib(n))

免费评分

参与人数 1热心值 +1 收起 理由
liphily + 1 我很赞同!

查看全部评分

1039468583 发表于 2020-11-2 20:22
[Python] 纯文本查看 复制代码
def cache(fun):
    fibs = {}
    def wrapper(n):
        if n in fibs:
            return fibs[n]
        res = fun(n)
        fibs[n] = res
        return res
    return wrapper


@cache
def fib(n):
    return 1 if n < 2 else fib(n - 1) + fib(n - 2)


if __name__=="__main__":
    num = int(input("请输入第n个月:"))
    print(fib(num-1))

免费评分

参与人数 1吾爱币 +1 收起 理由
itchings + 1 我很赞同!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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