递归:一个过程或函数调用自身的一种方法。

1. 效果图

2. 代码

def factorial(n):
'''
该函数用来求任意数的阶乘 参数:
n 要求阶乘的数字
'''
# 基线条件 判断n是否为1,如果为1则此时不能再继续递归
if n == 1 :
# 1的阶乘就是1,直接返回1
return 1 # 递归条件
return n * factorial(n-1) print(factorial(5))

原笔记:

# 递归是解决问题的一种方式,它和循环很像
# 它的整体思想是,将一个大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题
# 递归式函数的两个要件
# 1.基线条件
# - 问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了
# 2.递归条件
# - 将问题继续分解的条件
# 递归和循环类似,基本是可以互相代替的,
# 循环编写起来比较容易,阅读起来稍难
# 递归编写起来难,但是方便阅读 # 练习
# 创建一个函数 power 来为任意数字做幂运算 n ** i
# 10 ** 5 = 10 * 10 ** 4
# 10 ** 4 = 10 * 10 ** 3
# ...
# 10 ** 1 = 10
def power(n , i):
'''
power()用来为任意的数字做幂运算 参数:
n 要做幂运算的数字
i 做幂运算的次数
'''
# 基线条件
if i == 1:
# 求1次幂
return n
# 递归条件
return n * power(n , i-1) # print(power(8,6)) #
# 练习
# 创建一个函数,用来检查一个任意的字符串是否是回文字符串,如果是返回True,否则返回False
# 回文字符串,字符串从前往后念和从后往前念是一样的
# abcba
# abcdefgfedcba
# 先检查第一个字符和最后一个字符是否一致,如果不一致则不是回文字符串
# 如果一致,则看剩余的部分是否是回文字符串
# 检查 abcdefgfedcba 是不是回文
# 检查 bcdefgfedcb 是不是回文
# 检查 cdefgfedc 是不是回文
# 检查 defgfed 是不是回文
# 检查 efgfe 是不是回文
# 检查 fgf 是不是回文
# 检查 g 是不是回文 def hui_wen(s):
'''
该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False 参数:
s:就是要检查的字符串
'''
# 基线条件
if len(s) < 2 :
# 字符串的长度小于2,则字符串一定是回文
return True
elif s[0] != s[-1]:
# 第一个字符和最后一个字符不相等,不是回文字符串
return False
# 递归条件
return hui_wen(s[1:-1]) # def hui_wen(s):
# '''
# 该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False # 参数:
# s:就是要检查的字符串
# '''
# # 基线条件
# if len(s) < 2 :
# # 字符串的长度小于2,则字符串一定是回文
# return True
# # 递归条件
# return s[0] == s[-1] and hui_wen(s[1:-1]) print(hui_wen('abcdefgfedcba'))

最新文章

  1. pmd静态代码分析
  2. 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)
  3. Linux+postfix+extmail+dovecot打造基于web页面的邮件系统
  4. cf--------(div1)1A. Theatre Square
  5. HDFS分布式文件系统设计思想
  6. 【BZOJ3262】 陌上花开
  7. JAXB - Annotations, The Object Factory: XmlRegistry, XmlElementDecl
  8. 部署服务能在Dynamics CRM Online上使用吗?
  9. SPOJ NSUBSTR
  10. VSCODE安装以及使用Python运行调试代码的简单记录
  11. 01-docker简介
  12. Python模拟Linux的Crontab, 写个任务计划需求
  13. Web Components 是什么
  14. Jira 6.0.5的详细安装及汉化授权
  15. AsyncCallback 异步回调委托
  16. 正则工具类 -- RegexUtils
  17. 【LG4735】最大异或和
  18. iloc[[i]] 和 loc[[i]] 的区别
  19. java成神之——properties,lambda表达式,序列化
  20. QWebView使用

热门文章

  1. mysql基础(库、表相关)
  2. vue echarts引用
  3. 如何读取redis中的key值中的结果
  4. 【u236】火炬
  5. P1050 全排列
  6. setTimeout第三个参数
  7. css页面去除滚动条
  8. C# 循环的判断会进来几次
  9. dotnet 通过 HttpClient 下载文件同时报告进度的方法
  10. 解决IDEA使用terminal时 git log 乱码