当前位置: 首页 > wzjs >正文

目录在标题后 wordpresswin7优化大师官网

目录在标题后 wordpress,win7优化大师官网,北京网站建设公司案例,长沙网站设计公司怎么样课程:B站大学 记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化 递归算法 递归的基本原则递归的使用作业小tips:斐波那契数列阶乘快速排序 实践是检…

课程:B站大学
记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化

递归算法

  • 递归的基本原则
    • 递归的使用
    • 作业小tips:
      • 斐波那契数列
      • 阶乘
      • 快速排序
  • 实践是检验真理的唯一标准


递归的基本原则

递归函数通常遵循以下原则:

  • 定义基本情况 确定一个或多个输入的特殊情况,当满足这些条件时,递归函数将直接返回结果而不再调用自身。
  • 减小问题规模 通过调用自身来解决一个规模更小的问题,这样每次递归调用都在问题规模上取得了进展。
    也就是需要一个已定义好的规则来使其它非基本的情况转化为基本情况。
  • 终止条件 递归函数必须包含能够导致函数不再递归调用的条件,以避免无限递归。

递归的使用

数学中有一个比较经典的递归算式就是求阶乘

一个正整数的阶乘 factorial 是所有小于及等于该数的正整数的积,并且 0 的阶乘为 1。自然数 n 的阶乘写作 n!。

对阶乘的定义进行分析:

首先定义 f(n) 为阶乘函数。它的结果就是阶乘计算之后的值。
从定义中能得到基本情况为: f(0) = 1, f(1) = 1
其它情况: f(2) = 21 = 2f(1),f(3) = 321 = 3*f(2) 即 f(n) = f(n-1) * n
示例:

def f(n):"""实现计算 n 的阶乘return:n 阶乘计算之后的值"""if n == 0 or n == 1:# 对应基本情况return 1return f(n - 1) * n  # 对应递归情况

大多数情况下的递归操作都可以使用循环所替代。

在使用递归时,要注意避免陷入无限调用而产生的内存溢出。

作业小tips:

斐波那契数列

编写一个Python程序,使用递归算法,生成并输出斐波那契数列的前n项,其中n是用户指定的正整数。斐波那契数列,又称黄金分割数列,指的是:1、1、2、3、5、8、13、21、34…从第三个数开始,每个数字都是前两个数字之和。

def fibonacci(n):if n <= 0:return 0elif n == 1 or n == 2:return 1else:return fibonacci(n - 1) + fibonacci(n - 2)# 计算斐波那契数列的第 10 项
n = 10
fib_result = fibonacci(n)
print(f"斐波那契数列的第 {n} 项为:{fib_result}")
def fibonacci(n): 这是定义一个名为 fibonacci 的函数,它接受一个参数 n,用于计算斐波那契数列的第 n 项。if n <= 0: 这是一个条件判断语句,用于检查 n 是否小于等于 0return 0 如果 n 小于等于 0,返回 0。elif n == 1 or n == 2: 这是另一个条件判断语句,检查 n 是否等于 12return 1 如果 n 等于 12,返回 1return fibonacci(n - 1) + fibonacci(n - 2) 这是递归的部分。当 n 大于 2 时,递归地调用 fibonacci 函数来计算第 n-1 项和第 n-2 项的和,然后返回结果。fib_result = fibonacci(n) 调用 fibonacci 函数,传入参数 n,计算斐波那契数列的第 10 项。print(f"斐波那契数列的第 {n} 项为:{fib_result}") 打印计算结果,显示斐波那契数列的第 10 项的值。

阶乘

编写一个Python程序,使用递归算法,计算给定正整数n的阶乘。阶乘的定义是从1到n所有正整数的乘积。例如3的阶乘为123=6。
def factorial(n):

    if n == 0 or n == 1:return 1else:return n * factorial(n - 1)n = int(input("请输入要计算阶乘的正整数:"))
result = factorial(n)
print(f"{n}的阶乘是:{result}")

快速排序

思路:

  • 首先选择一个基准元素,通常是选择待排序列表的第一个元素。
  • 将列表分成两部分,小于基准元素的元素放在左边,大于基准元素的元素放在右边。这个过程称为分区(partition)。
  • 递归地对左右两个分区进行快速排序。也就是将左边的分区作为新的子列表,再次选择基准元素,并进行分区操作。对右边的分区也是同样的操作。
  • 递归的结束条件是分区中只有一个元素或为空,此时分区已经是有序的。
  • 最后将所有的分区合并起来,即可得到排好序的列表。
def quickSort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]  # 选取数组中间元素作为基准值left = [x for x in arr if x < pivot]  # 小于基准值的部分放在左边列表middle = [x for x in arr if x == pivot]  # 等于基准值的部分放在中间列表right = [x for x in arr if x > pivot]  # 大于基准值的部分放在右边列表return quickSort(left) + middle + quickSort(right)  # 合并结果返回

在这里插入图片描述

实践是检验真理的唯一标准

http://www.dtcms.com/wzjs/518149.html

相关文章:

  • 注册网站域名后免费建站免费网站推广网址
  • 二手车网站建设南宁seo收费
  • wordpress要发表评论您必须先登录seo标题优化关键词怎么选
  • 哪个网站可以做服装批发衣服seo企业顾问
  • wordpress多站点子网站css错误seo点击排名器
  • java做的网站的好处企业软文
  • 重庆网票app下载seo搜索是什么意思
  • 网络宣传网站建设咨询想开个网站怎样开
  • 黔南州住房和城乡建设局网站网络营销的50种方法
  • 徐州网站定制国内最新十大新闻
  • 驾校网上约车网站开发指数是什么
  • 做海鲜团购网站新乡网站seo
  • 怎样在百度做网站表白广州seo黑帽培训
  • 做任务反佣金的网站今日要闻10条
  • 维护网站要做哪些工作交换友情链接的平台有哪些
  • 网站建设目标 优帮云郑州专业seo首选
  • 购物网站怎么做代码google竞价推广
  • 云虚服务器网站建设现在最火的发帖平台
  • 外包做网站要十几万班级优化大师免费下载安装
  • 天津模板建站代理广告网站留电话不用验证码
  • 手机网站建设日程表推广接单平台哪个好
  • 哪个网站做浏览器主页好网站制作平台
  • 做网站刷东西免费推广产品的平台
  • 卡盟网站怎么做图片素材网络服务商怎么咨询
  • java cms建站免费建站的网站有哪些
  • 做网站要学的代码免费网上申请注册
  • 彩票网站开发 合法购物网站排名
  • 招聘网站建设及推广网络营销推广工具有哪些?
  • 汽车网站源码上海网站营销seo电话
  • 做一个网站做少钱2023年7月疫情还会严重吗