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个月的值,代码怎么改?
输出语句加个条件
if i == n 循环内加判断后输出或者循环结束后输出 本帖最后由 风子是我 于 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='')
完美解决,又学了一招。
鸡兔同笼?看错题了{:301_973:} 你看看
```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:46 编辑
{:1_926:}这特么就是考算法的问题....d1=1 d2=1然后算出总和i=d1+d2然后进入一个循环一直去改变一个d2变量 d2=i-d2 i=i+d2 jy02427010 发表于 2020-11-2 19:36
你看看
```python
month=int(input('繁殖几个月?: '))
不对,12个月的结果是144对 楼主的要求,最后的循环不要了,直接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))
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