风子是我 发表于 2020-11-2 18:59

Python 斐波那契数列,计算兔子总数

本帖最后由 风子是我 于 2020-11-2 19:01 编辑





#定义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 编辑

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

#定义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

鸡兔同笼?看错题了{:301_973:}

jy02427010 发表于 2020-11-2 19:36

你看看
```python
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 编辑

{:1_926:}这特么就是考算法的问题....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
你看看
```python
month=int(input('繁殖几个月?: '))


不对,12个月的结果是144对

lphgor 发表于 2020-11-2 20:17

楼主的要求,最后的循环不要了,直接print不就好了吗


#定义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))

1039468583 发表于 2020-11-2 20:22

def cache(fun):
    fibs = {}
    def wrapper(n):
      if n in fibs:
            return fibs
      res = fun(n)
      fibs = 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] 2
查看完整版本: Python 斐波那契数列,计算兔子总数