山大王 发表于 2017-9-16 18:00:16

23课时,迭代遇到的问题

当n>2时,显示的结果只有2,请问,问题出在哪里了,新手上路,多多指教。

def Fun(n):
    n1 = 1
    n2 = 1
    n3 = 1
    if n <1:
      print('输入错误')
      return -1
    if n == 0 or n == 1:
      return 1
    if n > 2:
      n3 = n1 + n2
      n2 = n3
      n1 = n2
      n -= 1
      return n3
    if n == 1:
      return 1
    else:
      return 2
n = int(input('请输入一个整数:'))
result = Fun(n)
if result >= 1:
    print ('有%d只兔子' %result)

冬雪雪冬 发表于 2017-9-16 20:13:53

没有循环只会算到2,我安装你的思路修改了。
def Fun(n):
    n1 = 1
    n2 = 1
    if n <1:
      print('输入错误')
      return -1
    if n == 0 or n == 1:
      return 1
    if n >= 2:
      while n - 1:
            n3 = n1 + n2
            n1 = n2
            n2 = n3
            n -= 1
      return n2

n = int(input('请输入一个整数:'))
result = Fun(n)
if result >= 1:
    print ('有%d只兔子' %result)

疯子的疯 发表于 2017-9-21 09:52:18

单就这个程序,fun函数底部那一对儿if和else是一直执行的,所以return只有两种结果:当n == 1时为1;当n != 1时为2.
页: [1]
查看完整版本: 23课时,迭代遇到的问题