Python递归函数与斐波那契数列
定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
阶乘实例
 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 调用自身函数
2 有一个明显的结束条件,问题规模相比上次递归有所减少
优点: 定义简单,逻辑清晰,所有的递归函数都可以写成循环的方式,但是循环的逻辑不如递归清晰。
但是,递归的效率不高,递归层次过多会导致栈溢出,大概1000层。
斐波那契数列
def fibNum(n): #斐波那契数列
a, b = 0, 1
for i in range(n):
b, a = a+b, b
return b
n = int(input(">>:"))
if n == 1:
print(0)
elif n == 2:
print(1)
else:
print(fibNum(n-2))
用递归写
def fibo(n):
before = 0
after = 1
if n == 0 or n == 1:
return n if n <= 3:
return 1
return fibo(n-1)+fibo(n-2) print(fibo(3))
递归效率低,当数字过大时,会很慢。
Python递归函数与斐波那契数列的更多相关文章
- Python与Go斐波那契数列
		#!/usr/bin/env python # -*- coding: utf-8 -*- # 斐波那契数列 def fibonacci_sequence(num): aa = 0 b = 1 li ... 
- python练习:斐波那契数列的递归实现
		python练习:斐波那契数列的递归实现 重难点:递归的是实现 def fib(n): if n==0 or n==1: return 1 else: return fib(n-1)+fib(n-2) ... 
- 如何使用Python输出一个[斐波那契数列]
		如何使用Python输出一个[斐波那契数列]Fibonacci 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonac ... 
- Python递归及斐波那契数列
		递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可 ... 
- Python 实现 动态规划 /斐波那契数列
		1.斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数 ... 
- python练习题-打印斐波拉契数列前n项
		打印斐波拉契数列前n项 #encoding=utf-8 def fibs(num): result =[0,1] for i in range(num-2): result. ... 
- Python练习笔记——斐波那契数列
		斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一 ... 
- Python生成器实现斐波那契数列
		比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 wh ... 
- 用Python来实现斐波那契数列.
		1).递归 def fib_recur(n): assert n >= 0, "n > 0" if n <= 1: return n return fib_rec ... 
随机推荐
- Handsontable Read-only cells
			一,列只读 
- jmock2.5基本教程(转)
			原文:http://www.cnblogs.com/zfc2201/archive/2011/12/30/2307970.html jmock2.5基本教程 目录 第0章 概述 第1章 jmock初体 ... 
- 多线程下不反复读取SQL Server 表的数据
			在进行一些如发送短信.邮件的业务时,我们常常会使用一个表来存储待发送的数据,由后台多个线程不断的从表中读取待发送的数据进行发送.发送完毕后再将数据转移到历史表中,这样保证待发送表的数据普通情况下不会太 ... 
- MATLAB快速注释方法
			觉得有用,未免以后忘记,收藏了.原文来自:http://i.azpala.com/2008/09/18/matlab-multi-line-comment/ A. %{ 若干语句 %} B. 多行注释 ... 
- ASP.NET导入Excel到SQL数据库
			protected void btnChange_Click(object sender, EventArgs e) { UserInfoClass tClass = (UserInfoClass)S ... 
- undefined和null的区别
			在javascript中undefined和null几乎是没有区别的 undefined==null;//true; 区别: null是一个表示“无”的对象,转为数值为0:或者说没有对象,此处 ... 
- css之浏览器初始化方案
			HTML, body, div, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, blockquote,pre, form, fieldset, ... 
- js 分割循环
			var str ='1,2,3'; var arr = str.split(","); var array1 =[]; var array2 =[]; for(i=0,l=arr. ... 
- FullCalendar 的学习笔记(一)
			前一段时间,一个老项目需要新增一个小功能,日程表~ 于是网上找了下,发现FullCalendar这个控件还不错于是就拿来用了下,下面简单介绍下我的学习笔记. 首先就是了解下FullCalendar的A ... 
- nginx+tomcat的集群和session复制
			前端服务器采用nginx,后端应用服务器采用tomcat.nginx负责负载均衡,session复制在tomcat上处理. 1.nginx安装(略) 2.nginx配置负载均衡 http { incl ... 
