Python递归及斐波那契数列】的更多相关文章

递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理.于是,fact(n)用递归的方式写出来就是: def fact(…
python练习:斐波那契数列的递归实现 重难点:递归的是实现 def fib(n): if n==0 or n==1: return 1 else: return fib(n-1)+fib(n-2) def testFib(n): for i in range(n+1): print('fib of',i,'=',fib(i)) print(testFib(6)) python练习:使用上述程序计算fib(5),那么需要计算多少次fib(2)的值? 重难点:全局变量的定义和使用 i=0#定义一…
如何使用Python输出一个[斐波那契数列]Fibonacci 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列". 例子:1.1.2.3.5.8.13.21.34.-- 解法1: 100以内的斐波那契数列 x=1 y=1 print(x,end=" ") print(y,end=" ") while(True)…
#!/usr/bin/env python # -*- coding: utf-8 -*- # 斐波那契数列 def fibonacci_sequence(num): aa = 0 b = 1 li = list() li.append(aa) li.append(b) for i in range(1, num): aa, b = b, a + b li.append(b) return li if __name__ == '__main__': a = fibonacci_sequence(…
php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是php自动选择,这就会有下面的情况: 当int不够的时候自动转化为float,float不够的时候自动转化为科学计数法 二.php实现记忆化递归--以斐波那契数列为例 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. 三.代码 代码一 <?php $arr = array…
一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件处理: if 条件成立: val = 1 else: val = 2 改成三元运算 val = 1 if 条件成立 else 2 二.智能检测文件编码 用第三方模块chardet 首先要安装chardet模块 ,用pip命令进行安装 chardet的用法 import chardet f = open("staff_table.txt","rb") data =f.read() f.clos…
1.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). 递归实现: class Solution(): def Fibnacci(self,n): if n <= 0: return 0 if n == 1: return 1 return self.Fibnacci(n-1) + self.Fibnacci(n-2) 非递归实现: def Fibnacci(n): result = [0,1] if n <= 1: return…
递归.递推计算斐波那契数列第n项的值: #include <stdio.h> long long fact(int n); //[递推]计算波那契数列第n个数 long long fact2(int n);//[递归] int main(int argc, char *argv[]) { ; ) { printf("%d %I64d %I64d\n",i,fact(i),fact2(i)); i++; } ; } long long fact(int n) //[递推]计算…
定义:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 阶乘实例 n = int(input(">>:")) def f(n): s = 1 for i in range(2, (n + 1)): s *= i return s print(f(n)) 递归 def factorial_new(n): if n==1: return 1 return n*factorial_new(n-1) print(factorial_new(3))…
1.斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1.1.2.3.5.8.13.21.34.……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(3)=2,F(n)=F(n-1)+F(n-2)(n>=4,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学…
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1.1.2.3.5.8.13.21.34.……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以<斐波纳…
1).递归 def fib_recur(n): assert n >= 0, "n > 0" if n <= 1: return n return fib_recur(n-1) + fib_recur(n-2) for i in range(1, 20): print(fib_recur(i), end=' ') 2)循环 def fib_loop(n): a, b = 0, 1 for i in range(n+1): a, b = b, a+b return a…
打印斐波拉契数列前n项 #encoding=utf-8 def fibs(num):    result =[0,1]    for i in range(num-2):        result.append(result[-2]+result[-1])    return resultprint fibs(10) 结果:…
比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 while n < number: print(b) a, b = b, a + b n = n + 1 return 'OK!' print(fib(5)) 结果: 1 1 2 3 5 OK! 我们可以看出从第一个元素开始,推算出后续任意的元素.很像generator. 要把fib函数变成genera…
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0,   F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1. 示例 1: 输入:n = 2输出:1示例 2: 输入:n = 5输出:5 提示: 0 <= n &l…
描述 一个斐波那契序列,F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2),根据n的值,计算斐波那契数F(n),其中0≤n≤1000. 输入 输入数据的第一行为测试用例的个数t,接下来为t行,每行为一个整数n(0≤n≤1000). 输出 输出每个测试用例的斐波那契数F(n). 样例输入 2 1 2 样例输出 1 1 list=[] for i in range(1001): if i==0: list.append(0) elif i==1 or…
[题目描述] 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和. 给出一个正整数a,要求菲波那契数列中第a个数是多少. [输入] 第1行是测试数据的组数n,后面跟着n行输入.每组测试数据占1行,包括一个正整数a(1≤a≤20). [输出] 输出有n行,每行输出对应一个输入.输出应是一个正整数,为菲波那契数列中第a个数的大小. [输入样例] 4 5 2 19 1 [输出样例] 5 1 4181 1 来自一枚刚学不久小蒟蒻, 第一次发博客: 记得zhx说过…
so eary! 1 a,b = 0, 1 2 while b<100: 3 print (b), 4 a, b = b, a+b 本文转载自:python黑洞网 原文链接:http://www.pythonheidong.com/blog/article/9/…
有一列数组[1,1,2,3,5,8,,,,,],计算第n个数字的大小 def abstract(n): fibs = [1, 1] for i in range(n-2): fibs.append(fibs[-2] + fibs[-1]) print fibs //打印数组的所有内容 print fibs[-1] //打印数组中的第n个数字def main(): n = input('please input n: \n') abstract(n)if __name__ == '__main__…
.model small ;递归fib,使用压缩BCD码,小端派 .data y1 byte 6 dup(0) y2 byte 6 dup(0) vis byte 1,1,1,61 dup(0) ;便于调试 num byte 6 dup(0),1,5 dup(0),1, 5 dup(0), 300 dup(0) ;di .stack 4096 .code main proc far start: mov ax,@data mov ds,ax mov ax,50 call fib mov bx,o…
# coding=utf-8 # Fibonacci.py Fib = {} def Fibonacci(n): global Fib if Fib.has_key(n): return Fib[n] if n == 0: return 1 if n == 1: return 1 Fib[n] = Fibonacci(n-1) + Fibonacci(n-2) return Fib[n] if __name__ == '__main__': for i in range(50): print F…
转载于知乎刘奕聪的方法 一 f = [1, 1]print([f.append((f[-1] + f[-2])) or f.pop(0) for i in range(100)]) ///  f.append()返回none值,所以靠f.pop来输出f. 二 print(reduce(lambda f, i: f.append((f[-2] f[-1])) or f, range(98), [1, 1]))…
什么是递归算法? -- 函数自己调用自己本身 -- 本质上return返回的时候,总是把一个参数传入到自己函数本身,让函数反复调用下去 递归有何特点? -- 必有一个结束条件 没有结束条件,递归就没有任何意义,python中默认只能999层递归 递归过多栈溢出,报错 -- 效率不高 相对而言,对于正向递归,递归次数和循环次数一致,没有区别 对于逆向递归,要递归到最后才能得到确定的值,然后从最底层返回 一次是递归到结束值,一次从结束值返回到初始值 -- 如何正向递归实现斐波那契数列? #!/usr…
刚开始学Python的时候,记得经常遇到打印斐波那契数列了,今天玩玩使用四种办法打印出斐波那契数列 方法一:使用普通函数 def feibo(n): """ 打印斐波那契数列 :param n: 输入要打出多少项 """ count = 0 # 定义一个计数器 num1, num2 = 0, 1 # 定义前2项 0,1 while count < n: print(num1, end=" ") num1, num2 =…
题目:写一个函数,输入n,求斐波那契数列的第n项. package Solution; /** * 剑指offer面试题9:斐波那契数列 * 题目:写一个函数,输入n,求斐波那契数列的第n项. * 0, n=1 * 斐波那契数列定义如下:f(n)= 1, n=2 * f(n-1)+f(n-2), n>2 * @author GL * */ public class No9Fibonacci { public static void main(String[] args) { System.out…
斐波那契数列源于数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入的计算问题.假设某种兔子兔子,出生第一个月变成大兔子,大兔子再过一个月能生下一对小兔子,且一年内不会发生死亡.现有一对小兔子,请问一年后有多少只兔子? 分析这个数列其实是有规律的第一个月:一对小兔子第二个月:一对大兔子第三个月:一对大兔子+一对小兔子第四个月:两对大兔子+一对小兔子--仔细分析:数列如下 1 1 2 3 5 8 13 21前面两位的和都是第三位的结果1+1 = 21+2 =…
Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列) 一丶带参数的装饰器 def wrapper_out(pt): def wrapper(func): def inner(*args,**kwargs): useinput = input('请输入用户名:>>').strip() password = input('请输入密码:>>').strip() with open(pt,encoding='utf-8') as f: for…
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素.迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁.这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件. 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随…
在各种语言中,谈到递归首当其冲的是斐波那契数列,太典型了,简直就是标杆 一开始本人在学习递归也是如此,因为太符合逻辑了 后台在工作和学习中,不断反思递归真的就好嘛? 首先递归需要从后往前推导,所有数据都要保存一遍~,如果是输入很大数字,如以前的1M内存可能不够把?? 我们暂且不谈过去,毕竟是过去,现在即使手机的内存都动辄3G.4G,哪能不够 斐波那契数列典型代码如下: def fib1(x): if x == 1: return 1 elif x == 2: return 1 elif x >…
一.二分查找 二分查找也称之为折半查找,二分查找要求线性表(存储结构)必须采用顺序存储结构,而且表中元素顺序排列. 二分查找: 1.首先,将表中间位置的元素与被查找元素比较,如果两者相等,查找结束,否则利用中间位置将表分成前.后两个子表. 2.如果中间位置元素<被查找元素,则开始位置 = 中间位置,结束位置 = 表的长度-1 3.如果中间位置元素>被查找元素,则开始位置=0,结束位置=中间位置 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,…