离殇不见伤 发表于 2018-3-4 11:54:21

python 改不出来了,,,求助(斐波那契数列)

n = int(input("请输入月数:"))

if n <= 2:
    print("第n月共有1对兔子")
else:
    n = i
    u = 1
    v = 1
    while i <= 2:
      print("第%d月共有%d只兔子" %(n , x))
    x = u + v
    if i % 2 == 0:
      u = x
    else:
      v = x
    i = i - 1
      

南城顾她 发表于 2018-3-4 12:26:08

可以用递归方便简单而且严谨
def fun(n):
        if n == 1 or n == 2:
                return 1
        elif n > 2 :
                return fun(n-1) + fun(n-2)

        else:
                return '请输入正确的月份'
def main():
        c = int(input('请输入兔子的月份:'))
        d = fun(c)
        print(d)
main()

snail:) 发表于 2018-3-4 12:30:35

def fibnaqi(n):
    if n == 1 or n == 2:
      return 1
    while n>2:
      return fibnaqi(n-1)+fibnaqi(n-2)
for n in range(1,10):
    print(fibnaqi(n))

°蓝鲤歌蓝 发表于 2018-3-4 12:34:19

n = int(input("请输入月数:"))
a,b = 0,1
while n-1:
    a,b = b,a+b
    n -= 1

print("第%d月共有%d只兔子" %(n , b))

南城顾她 发表于 2018-3-4 12:55:17

n = int(input('请输入兔子的月份:'))
x = 0
y = 1
i = 1

while n - 1:
    i = y + x
    x = y
    y = i
    n -= 1

print(i)

wgz890813 发表于 2018-3-4 14:04:18

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

if n <= 2:
    print('第n个月共有1对兔子')
else:
    i = n # i 还没有定义 应该是i=n
    u = 1
    v = 1
    while i > 2: # 如果是i <= 2 和if 循环就是重复的了
      x = u + v
      if i % 2 == 0:
            u = x
      else:
            v = x
      i -= 1
    print('第 %d 个月共有 %d 只兔子' %(n,x)) #当while循环结束再print

离殇不见伤 发表于 2018-3-4 16:18:59

南城顾她 发表于 2018-3-4 12:26
可以用递归方便简单而且严谨
def fun(n):
        if n == 1 or n == 2:


想用迭代试一下写不写得出来

离殇不见伤 发表于 2018-3-4 16:19:37

snail:) 发表于 2018-3-4 12:30


这样好像少过程了

离殇不见伤 发表于 2018-3-4 16:22:49

wgz890813 发表于 2018-3-4 14:04


长知识啦

南城顾她 发表于 2018-3-4 17:59:35

本帖最后由 南城顾她 于 2018-3-4 18:05 编辑

11
页: [1]
查看完整版本: python 改不出来了,,,求助(斐波那契数列)