码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Haskell多重递归,相互递归(合并排序Merge Sort)


    Haskell多重递归,相互递归(合并排序Merge Sort)

    多重递归Multiple recursion
    本质上,当您在函数体中多次调用函数本身时,就会发生多次递归。
    例子:
    even :: Int -> Bool
    even 0 = True
    even n = odd (n-1)
    odd :: Int -> Bool
    odd 0 = False
    odd n = even (n-1)

    相互递归Mutual recursion
    真的没什么特别的,只需要考虑n个基本情况和n(其中n是相互递归的程度)

    优雅的排序
    函数式编程(连同排序)可以为许多问题带来优雅的解决方案。
    在 Java/C/Python/etc 中可能需要 10 行代码的事情通常可以在 Haskell 中用几行简洁易懂的行来表达。

    合并排序Merge Sort
    基本算法:将列表分成两半,对每一半进行排序,将两个排序列表合并在一起
    在这里插入图片描述
    将列表分成两半
    在这里插入图片描述
    将两个排序列表合并在一起
    在这里插入图片描述
    快速排序:提醒
    划分:
    选择一些称为枢轴(pivot)的元素。将其移动到排序序列中的最终位置,使所有较小的元素都在其左侧,较大的元素在其右侧。
    征服:
    对较小和较大元素的子数组进行递归排序
    结合:
    这里不需要做任何工作——在递归之后对数组进行排序。
    在这里插入图片描述

    一个不同的例子
    我们查看了一个示例,在该示例中,字符串中的一个字符被另一个字符替换。更有用的是一个函数,其中一个子字符串被另一个子字符串替换。
    在这里插入图片描述
    生成一个质数列表
    从 2 生成所有数字的列表,测试每个数字,看看它是否是质数
    如果不是,请扔掉它;如果有,请保留
    在这里插入图片描述
    或者…
    在这里插入图片描述
    那么递归是一切的答案吗?不
    这是一个非常强大的工具。但有时存在基于库函数的更优雅(和更有效)的解决方案
    递归本质上是低效的,但有时在函数式编程中不可避免
    函数式编程编译器非常复杂,编程语言中更高级别的抽象意味着编译器会做更多的工作,有一些技术允许编译器删除递归

  • 相关阅读:
    python LeetCode 刷题记录 35
    coreldraw2022新版本新功能介绍cdr2022
    在SpringSecurity + SpringSession项目中如何实现当前在线用户的查询、剔除登录用户等操作
    kettle从入门到精通 第六十六课 ETL之kettle kettle阻塞教程,轻松获取最后一行数据,so easy
    java面试强基(16)
    结合SkeyeVSS+SkeyeIVMS运维管控技术构建机关单位视频监控系统
    Linux —— 线程安全
    Android Jetpack之DataBinding+ViewModel+LiveData+Room
    SQL Server 索引结构
    C语言:数组(超级详细讲解)
  • 原文地址:https://blog.csdn.net/kirsten111111/article/details/126336969
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号