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
  • 相关阅读:
    POJ2785-4 Values whose Sum is 0
    Codeforce 9C
    Codeforces 797C -Minimal string
    程序员自我修养
    异或
    Socket网络编程
    java编写本月日历
    PreparedStatement的用法
    项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved 解决方法
    Dell灵越 5559笔记本安装固态硬盘 BIOS设置
  • 原文地址:https://www.cnblogs.com/pinpin/p/9915046.html
Copyright © 2011-2022 走看看