zoukankan      html  css  js  c++  java
  • 练习十一:兔子数量计算—斐波那契实例

    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
    假如兔子都不死,问每个月的兔子总数为多少?
    通过数学分析我们知道,兔子的规律为数列1,1,2,3,5,8,13,21....,看到规律了吗,我们熟悉的斐波那契数列。话不多说,上代码。

    方法一:使用递归

      1 def Fibonacci(n):
      2     if n == 1:
      3         return 1
      4     elif n == 2:
      5         return 1
      6     elif n > 2:
      7         return Fibonacci(n-1) + Fibonacci(n-2)
      8 
      9 sum = 0  #定义初始值
     10 for i in range(1,6): #计算五个月兔子,注意下:这里range中参数从1开始,从0开始话将报错
     11     fibonacci = Fibonacci(i)  #计算每个月兔子总数
     12     sum += fibonacci  #计算5个月后兔子总共多少对
     13     print("第{}月的兔子为{}".format(i,fibonacci))
     14 print("5个月后兔子总数为{}".format(sum))
    结果:
    第1月的兔子为1
    第2月的兔子为1
    第3月的兔子为2
    第4月的兔子为3
    第5月的兔子为5
    5个月后兔子总数为12
    方法二:使用迭代器
      1 def Fibonacci(n):
      2     t,a1,a2 = 1,1,1
      3     while t <= n:
      4         yield a1  #使用生成器
      5         a1,a2 = a2,a1+a2
      6         t += 1
      7 
      8 fibonacci = Fibonacci(5)
      9 for i in fibonacci:    #注意:也就是说将函数中的打印语句 换成 yield 语句, 以迭代器的形式来完成
     10     print(i)
     11 
    结果:
    1
    1
    2
    3
    5
  • 相关阅读:
    mybatis(八)手写简易版mybatis
    mybaits(七)spring整合mybaits
    Java学习之String StringBuffer StringBuilder区别
    Java学习之基本概念
    java多态
    HashMap变成线程安全方法
    java高级开发工程师面试题
    同步和异步
    Oracle创建索引的原则(转)
    导入maven工程错误
  • 原文地址:https://www.cnblogs.com/pinpin/p/9915046.html
Copyright © 2011-2022 走看看