
递归的学习
发布日期:2021-05-04 20:45:31
浏览次数:35
分类:原创文章
本文共 2321 字,大约阅读时间需要 7 分钟。
递归学习
递归三大要素
第一: 明确函数要干什么
第二: 寻找递归结束的条件
第三: 找出函数等价的关系式
递归求和
方法一
ls=[1,2,3,4,5]def fun(ls,n): if n==0: return ls[n] else: s=fun(ls,n-1) return s+ls[n]print(fun(ls,4))
方法二
def fun(ls,n): if n==len(ls): return 0 else: sum=fun(ls,n+1) return sum+ls[n]print(fun(ls,0))
递归判断字符串的内容是否相同
a="abcdef"b="abcdef"def fun(a,b): if len(a)==0: return True if len(a)!=len(b): return False if a[0]!=b[0]: return False else: return fun(a[1::],b[1::])print(fun(a,b))
斐波那契数列
1、1、2、3、5、8、13、21、34
def fun(n): #递归退出条件, 当n是第一个数,或者第二个数, 返回1 if n==1 or n==2: return 1 else: #第三个数就等于前两个数的和 return fun(n-2)+fun(n-1)
求在m个球中, 一次性取n个球, 不放回有多少种取法
#在m个球中, 取n个,不放回,有多少中取法def fun(m,n): #如果一次性取的球大于剩余的球, 则没有取法 if m<n: return 0 #如果相等, 则只有一种取法 if m==n: return 1 #如果n等于0, 则只要一种取法就是不取 if n==0: return 1 else: #想象m个球中有一个特殊球,取法划分,是否包含这个特殊球 # fun(m-1,n-1)不包含+fun(m-1,n)包含的两种方式加起来, 就是一共多少种取法 return fun(m-1,n-1)+fun(m-1,n)print(fun(10,3))
求n个元素的全排列
def fun(s,k): if k==len(s): for i in s: print(i,end='') print() for i in range(k,len(s)): s[i],s[k]=s[k],s[i] fun(s,k+1) s[i], s[k] = s[k], s[i] #回溯s="ABC"ls=list(map(str,str(s)))fun(ls,0)
求两个字符串的公共最长的公共子序列的长度
# abcd bcds1=input().strip()s2=input().strip()def f(s1,s2): if len(s1)==0 or len(s2)==0: return 0 if s1[0]==s2[0]: return f(s1[1::],s2[1::])+1 else: return max(f(s1[1::],s2),f(s1,s2[1::]))print(f(s1,s2))
使用递归将字符串反转
s1=input().strip()def fun(s): if len(s)<=1: return s else: return fun(s[1::])+s[0]print(fun(s1))
使用递归打印杨辉三角
def f(m,n): if n==0 or m==n: return 1 else: return f(m-1,n)+f(m-1,n-1)n=int(input().strip())for i in range(n): for j in range(n-i-2,-1,-1): print(" ", end='') for j in range(i+1): print(f(i,j),end=' ') print()
m个A,n个B 可以组成多少组排列
def f(m,n): if m==0 or n==0: return 1 else: return f(m-1,n)+f(m,n-1)m,n=map(int,input().split())print(f(m,n))
求最大公约数
def f(x,y): if x<0: x=-x if y<0: y=-y if y==0: return x return f(y,x%y) #最大公约数 <辗转相除法>a=15b=60while True: if a==0: print(b) break a,b=b%a,a
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月13日 19时10分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
调度算法的一些评价指标
2019-03-04
同步时序逻辑电路分析
2019-03-04
python,matplotlib中再添加一个y轴(在原来图上添加一个新的y轴)
2019-03-04
将图例放在最下面并且横向放置(ggplot2:数据分析与图形艺术6.4.4练习题第3题)
2019-03-04
联想拯救者突然连不上网怎么办
2019-03-04
vue中的一些高级特性(含vue3新特性)
2019-03-04
1361: [NOIP]数制转换
2019-03-04
c++的内存管理
2019-03-04
全排列(深度优先搜索+递归)
2019-03-04
linux各种软件的安装
2019-03-04
多项式插值法的Python程序
2019-03-04
python项目中session和cookie的使用
2019-03-04
vue.js常用指令及用法
2019-03-04
GET和POST的区别
2019-03-04
vuex的核心概念和运行机制
2019-03-04
v-if和v-show的区别
2019-03-04
System V共享内存的基本使用与实现
2019-03-04
SSLOJ1210最佳游览问题
2019-03-04
P1026 统计单词个数&&SSL1017
2019-03-04