假设一对幼年兔子需要一个月长成成年兔子,一对成年兔子一个月后每个月都可以繁衍出一对新的幼年兔子(即兔子诞生两个月后开始繁殖)。不考虑死亡的情况,问第 N 个月时共有多少对兔子?

结果前几个月的兔子数量为:1,1,2,3,5,8,13,21,34.......

发现规律:从第三个月开始,每个月的兔子数量为上个月与上上个月的兔子数量之和。

非递归:

#p6_7.py
#兔子问题
def fab(n):
a1=1
a2=1
a3=1
if n<1:
print('输入有误')
return -1
while(n-2)>0:
a3=a1+a2
a1=a2
a2=a3
n-=1
return a3
#m=int(input('请输入整数'))
result=fab(35)
if result!=-1:
print('总共有%d对小兔崽子诞生'%result)

递归解法:

#p6_8.py
#递归兔子问题
def fab(n):
if n<0:
print('输入有误')
return -1
if n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
result=fab(35)
if result!=-1:
print('共有%d对小兔崽子诞生'%result)

[python]兔子问题,斐波那契数列 递归&非递归的更多相关文章

  1. 斐波那契数列PHP非递归数组实现

    概念: 斐波那契数列即表达式为 a(n) = a(n-1)+a(n-2) 其中 a1 =0 a2 = 1  的数列 代码实现功能: 该类实现初始化给出n,通过调用getValue函数得出a(n)的值 ...

  2. 如何使用Python输出一个[斐波那契数列]

    如何使用Python输出一个[斐波那契数列]Fibonacci 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonac ...

  3. Python与Go斐波那契数列

    #!/usr/bin/env python # -*- coding: utf-8 -*- # 斐波那契数列 def fibonacci_sequence(num): aa = 0 b = 1 li ...

  4. python练习:斐波那契数列的递归实现

    python练习:斐波那契数列的递归实现 重难点:递归的是实现 def fib(n): if n==0 or n==1: return 1 else: return fib(n-1)+fib(n-2) ...

  5. Python 实现 动态规划 /斐波那契数列

    1.斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数 ...

  6. Python练习笔记——斐波那契数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一 ...

  7. Python递归函数与斐波那契数列

    定义:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 阶乘实例 n = int(input(">>:")) def f(n): s ...

  8. python练习题-打印斐波拉契数列前n项

    打印斐波拉契数列前n项 #encoding=utf-8 def fibs(num):    result =[0,1]    for i in range(num-2):        result. ...

  9. Python生成器实现斐波那契数列

    比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 wh ...

  10. 用Python来实现斐波那契数列.

    1).递归 def fib_recur(n): assert n >= 0, "n > 0" if n <= 1: return n return fib_rec ...

随机推荐

  1. C#代码实现IoC(控制反转)设计,以及我对IoC的理解

    一. 什么是IoC 当在A类中要使用B类的时候,我们一般都是采用new的方式来实例化B类,这样一来这两个类就有很强的依赖关系,不符合低耦合的设计思想.这时候我们可以通过一个中间容器来实例化对象,需要的 ...

  2. 装饰器修复技术@wraps

    @wrap修复技术 首先我先说一下wrap的效果 如果没使用@wraps,当A调用了装饰器B的话,即使A.name,返回的会是装饰器B的函数名称,而不是A的函数名称如果使用了@wraps,当A调用了装 ...

  3. NLP(十五) 聊天机器人

    对话引擎 1.了解目标用户 2.理解用于沟通得语言 3.了解用户的意图 4.应答用户,并给出进一步线索 NLTK中的引擎 eliza,iesha,rude,suntsu,zen import nltk ...

  4. [python] - 读取文件内容,并输出

    1.读取文件,并逐行输出内容,代码如下: # coding=gbk import os path = 'E:\python_practice' os.chdir(path) fname = raw_i ...

  5. [python]print简单用法和读取用户输入

    代码开发环境:Eclipse 1.打印字符串: print "Hello world!" myString = "Hello world!" print myS ...

  6. 移动端适配,h5网页,手机端适配兼容方案.可以显示真实的1px边框和12px字体大小,dpr浅析

    以前写移动端都是用这段JS解决. (function (doc, win) { // 分辨率Resolution适配 var docEl = doc.documentElement, resizeEv ...

  7. 【Offer】[10-2] 【青蛙跳阶问题】

    题目描述 思路分析 Java代码 代码链接 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路分析 其实就是斐波那契 ...

  8. C#基础——事件初步

    事件是C#语言的重要成员之一,初学者往往不能很好的去理解和运用事件,特别是自定义事件.在这里将以较简单的方式呈现事件最基本的用法. 1.事件的定义 给事件下定义是一个较困难的事,因为它体现的是对象与对 ...

  9. 适合C++のOIer平日写题的开场模板

    上面的#define还是较充足的,快读模板也有,freopen也提前打好了,比较适合OIer(C++)平时刷题和考试的开场. (纯原版仅供SJZEZのORZ队&AFO队使用) (您老把开头的注 ...

  10. vim 高级功能

    本文章原创首发于公众号:编程三分钟 ,文末二维码. 文本编辑.跳转.删除.复制.替换这些操作用vim确实是快:但是好像仅仅是这样根本不能说服我vim超过鼠标的地方. 花点时间弄熟这些,除了炫技意外,主 ...