递归函数 day17
一 递归函数 n = 1 金老板 38+2 =40
n = 2 alex n+2= 金老板 36+2 = 38
n = 3 wusir n+2 = alex wusir 36 def age(n): #n = 2
if n == 3:
return 36
else:
return age(n+1)+2 jin_age = age(1) # 40
print(jin_age) 求阶乘 _ 递归函数
5! = 5*4*3*2*1 # 5 * 4! fn(5)
4! = 4*3*2*1 # 4 * 3! fn(4)
3 * 2! fn(3)
2 *1! fn(2)
1 fn(1) = 1
def fn(n): #n=5
if n == 1:return 1
return fn(n-1) * n
print(fn(5)) 二 算法
算法 计算的方法
99*99 = 99*(100-1) = 99*100-99*1 = 99*100-99 = 9900-99 = 9801 _ 人计算的方法
99 * 99
计算机的思维和人脑的思维是不同的
算法很难
计算机领域的 算法 是计算机认为简便的算法 查找算法
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
66
方法一: 循环 # 5000000 4999999
方法二: l.index(66) #最正确的方法 算法
从有序的列表中查找值的位置
[2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
41 < 66
[42,43,55,56,66,67,69,72,76,82,83,88]
66 < 67
[42,43,55,56,66]
55 < 66
[56,66]
56 < 66
[66]
66 == 66 递归 : 解决一个问题,问题的答案,依托于另一个问题,另外的这个问题和要解决的问题是基本一致的
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def find(l,aim):
mid = len(l)//2
if l[mid] > aim:
new_l = l[:mid]
find(new_l,aim)
elif l[mid] < aim:
new_l = l[mid+1:]
find(new_l, aim)
elif l[mid] == aim:
print('找到了:',mid,aim,l[mid])
find(l,66) def find(l,aim,start=0,end=None):
if end == None:end = len(l)-1
if start <= end:
mid = (end - start) // 2 + start
if l[mid] > aim:
return find(l,aim,start=start,end=mid-1)
elif l[mid] < aim:
return find(l,aim,start=mid+1,end=end)
elif l[mid] == aim:
return mid
else:
return None
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
print('ret :',find(l,18))
1 如果要查找的值不在列表中
2 参数的简化
3 返回值的问题 递归函数完成 : 三级菜单 真题附加题 斐波那契数列fib(20)
l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
def find(l,aim):
mid = len(l)//2
if l[mid] > aim:
new_l = l[:mid]
find(new_l,aim)
elif l[mid] < aim:
new_l = l[mid+1:]
find(new_l, aim)
elif l[mid] == aim:
print('找到了:',mid,aim,l[mid])
find(l,66) l=[]
def con(n):
if n==1:
return 1
elif n==2:
return 1
else:
return
f() def f(n):
if n==1:
return 1
elif n==2:
return 1
else :
return f(n-1)+f(n-2)
f(4)
print(f(4)) def f(n):
if x<n:
a=1
b=1
con=0
a+b=b+a
elif:
x=n
递归函数 day17的更多相关文章
- day17递归函数(二分法查找)
递归函数: 如果函数包含了对其自身的调用,该函数就是递归的: example 1:二分法查找的实现: def find_recursion(l,aim,start=0,end=None): #end不 ...
- day17.初识递归函数
在一个函数调用这个函数本身就是递归函数 递归函数默认深度最大997 n = 0 def func(): global n n += 1 print('hello,world') print(n) fu ...
- day17:递归函数
1,递归函数是一个函数体系,非常的难 2,练习题一 # 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao',' ...
- javascript中的递归函数
正常的递归函数如下: function factorial(num){ ){ ; }else{ ); } } 这个函数表面看起来还ok,但如果我们执行下面代码就会出错. var jenny = fac ...
- JS函数相关及递归函数的使用
JS函数相关及递归函数的使用 通用js程序: function 函数名(参数列表) { 函数体 } 可使用alert()输出,也可用return返回值. alert与return区别: functio ...
- python3--函数(函数,全局变量和局部变量,递归函数)
1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能, ...
- Python之路 day3 递归函数
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa """ 在函数内部,可以调用其他函数.如果一个函数在内 ...
- Python3学习(二)-递归函数、高级特性、切片
##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ...
- 浅谈-js递归函数
所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 下面我们就做一个10以内的阶乘试试看吧: [Ctrl+A 全选 ...
随机推荐
- splunk + docker-compose 实现自定义 index
splunk是一款非常优秀的运维管理平台.Splunk 是机器数据的引擎.使用 Splunk 可收集.索引和利用所有应用程序.服务器和设备生成的快速移动型计算机数据 . 使用 Splunking 处理 ...
- 推荐一款好用并且免费的markdown软件 Typora
Typora 的linux 安装步骤 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE su ...
- Java复习 之流
在Java程序中 对于数据的输入/输出操作以“流”方式进行:提供了各种各样的流类,用以获取各种不同的种类的数据,程序中通过标准的方法输入或输出数据 Inputstream 例子1: 但是中文会乱码 应 ...
- Structs复习 包含外部xml和默认Actiion
包含外部xml 可以用 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PU ...
- UIApplication 的学习
1.0 URL 的组成 == 协议头://主机名/路径 从iOS7 开始,系统提供了两种管理状态栏的方式,默认交给控制器去管理 2.0 旋转事件----> UIApplication --- ...
- Docker虚拟化平台
1.虚拟化技术的概念 1)虚拟化就是把物理资源转变为逻辑上可以管理的资源,以打破物理结构间的壁垒,让计算机的元件运行在虚拟的基础上,而不是真实的物理设备: 2)虚拟化技术可以将物理机硬件资源虚拟生成单 ...
- clone()与image和 cloneTo()
Mat image = imread("1.png" ) ; Mat image1 ; Mat image1(image) ;//仅是创建了Mat的头部分,image1与image ...
- 1.5.4、CDH 搭建Hadoop在安装之前(定制安装解决方案---配置自定义Java主目录位置)
配置自定义Java主目录位置 注意: Cloudera强烈建议安装JDK/ usr / java / jdk-version,允许Cloudera Manager自动检测并使用正确的JDK版本.如果在 ...
- Signed Distance Field Technique
[Distance Field Technique] 一种小纹理高清放大的技术. A distance field is generated from a high resolution image, ...
- Structured streaming
Structured streaming是spark 2.0以后新增的用于实时处理的技术.与spark streaming不同的是,Structured streaming打开了数据源到数据落地之间的 ...