首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏小樱的经验随笔

    HDU 2563 统计问题(递归,思维题)

    Sample Input 2 1 2 Sample Output 3 7 Author yifenfei Source 绍兴托普信息技术职业技术学院——第二届电脑文化节程序设计竞赛 分析: 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int T; 6 int n; 7 while(T--) 11 { 12 scanf("%d",&n); 13 a[1]=3; 14 a[2]=7;

    87470发布于 2018-04-08
  • 来自专栏用户3288143的专栏

    思维风暴】算法迭代和递归的理解

    文章目录 递归与迭代 递归消耗内存的缺点 为什么要有迭代 需要用迭代消解递归的情况 不需要消解的递归 结束语 递归与迭代 递归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。 递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。 这就存在一个把递归算法化为非递归算法的问题。 需要用迭代消解递归的情况 递归算法特别适合于所研究的问题或所处理的数据本身是递归定义的情况。 如果一个递归过程用非递归的方法实现后,速度提高了,那只是因为递归做了一些无用功。 因此,是递归的而不是迭代的算法应当表述成递归过程。如汉诺塔问题等。汉诺塔问题的递归算法中有两处递归调用,并且其中一处递归调用语句后还有其他语句,因此该递归算法不是尾递归或单向递归

    2.6K20发布于 2020-07-07
  • 来自专栏labuladong的算法专栏

    递归思维:k 个一组反转链表

    预计阅读时间:5 分钟 上篇文章 递归反转链表:如何拆解复杂问题 讲了如何递归地反转一部分链表,有读者就问如何迭代地反转链表,这篇文章解决的问题也需要反转链表的函数,我们不妨就用迭代方式来解决。 一、分析问题 首先,前文 学习数据结构的框架思维 提到过,链表是一种兼具递归和迭代性质的数据结构,认真思考一下可以发现这个问题具有递归性质。 什么叫递归性质? 我们可以直接递归调用 reverseKGroup(head, 2),因为子问题和原问题的结构完全相同,这就是所谓的递归性质。 我们公众号的成名之作之一 学习数据结构的框架思维 就提过,什么动规、回溯、分治算法,其实都是树的遍历,树这种结构它不就是个多叉链表吗?你能处理基本数据结构的问题,解决一般的算法问题应该也不会太费事。 那么如何分解问题、发现递归性质

    68520发布于 2021-09-23
  • 【杭电oj】1997 - 汉诺塔VII(递归思维

    3 6 5 4 1 1 2 3 2 6 3 6 5 4 2 3 2 1 1 3 1 3 1 2 1 1 20 2 20 17 2 19 18 16 16 15 14 13 12 11 10 9 8 7 false false false true true Author Zhousc@ECJTU Source ECJTU 2008 Spring Contest 题解: 这道题的思维要求是相当高的 对剩下的n-1个盘子递归分情况判断。 ②n盘子在b,那么是错误的移动。 ③如果n盘子在c,那么此时n移动完成,在进行着b到c的过程。对剩下的n-1个盘子递归分情况判断。 代码如下: #include <cstdio> bool hanoi(int x,int *a,int *b,int *c) { if (x == 0) //递归终止条件 return true

    35010编辑于 2025-08-26
  • 来自专栏glm的全栈学习之路

    Googol字符串 (递归思维题)

    对于每个字符串,分为三个部分、前中后,中间由最独立的0组成,前面一直继承下来不变,后面记录一个反转对应的位置以及将本位上的值翻转的次数(0变1,1变0)

    36820发布于 2021-05-27
  • 来自专栏不知非攻

    从基础概念到进阶思考,完整的递归思维学习

    无论是刷算法题,还是日常开发,递归都是一个非常常用的解决问题的思路。利用递归思维,我们可以使用少量的代码解决复杂的问题。 不过在刚开始的时候,递归通常没有那么容易理解,我们就从图示中的几个方向,系统的为大家介绍递归的学习与运用。 0、基础概念 递归是一种迭代思维。是对复杂问题的一种拆解。 我们这里使用的是一个非常基础的例子来演示递归思维,并非为了探讨什么样的计算方式来实现数字累加更合适 1、基础案例一 在代码实现中,递归主要包含两个部分。 函数调用自身。 ("fabonacci: {}", fabonacci.at(10)) 4、递归进阶:分治策略 我们再来回顾一下递归思维:重复的将问题拆分为同类型的子问题。 7、尾递归 递归容易有栈溢出的风险。因此尾调用优化对于递归而言非常重要。但是要调整也比较简单,我们只需要明确好怎么样的写法是尾调用即可 例如,我们刚才的写法,就不满足尾调用的标准。

    1.3K21编辑于 2024-04-18
  • 来自专栏CSDNToQQCode

    Rust算法——汉诺塔问题——递归思维的经典案例

    汉诺塔(Tower of Hanoi)是经典的递归问题,它完美展示了递归思维的核心:将复杂问题分解为相同结构的子问题。 本文将详细介绍汉诺塔问题的递归解法,分析其时间复杂度,并提供多种实现方式和可视化方案。 目录 1. 问题描述 2. 递归解法 3. 算法实现 4. 复杂度分析 5. 迭代解法 6. 可视化实现 7. 实际应用 8.1 递归思维训练 汉诺塔问题是理解递归思维的绝佳案例: /// 递归思维要点总结 fn recursive_thinking_summary() { println! ("递归思维要点:"); println!("1. 找到问题的子结构(相同模式)"); println!("2. 定义递归终止条件"); println!("3. 汉诺塔展示了递归的优雅和强大 虽然时间复杂度是指数级,但递归解法是最直观的 可以通过栈模拟实现迭代版本 递归思维模式: 分解:将问题分解为子问题 解决:递归解决子问题 合并:组合子问题的解

    69010编辑于 2025-12-16
  • 来自专栏腾讯技术工程官方号的专栏

    递归」第7集 | 腾讯开源联盟出征!

    我们为什么叫「递归」 “递归” (recursion) 是一种在程序设计语言中被广泛使用的算法。它有两大特点,一是调用自己,二是化繁为简。我们当中那些优秀的技术人又何尝不是如此? 这就是我们「递归」栏目的初心,记录平凡腾讯技术人的不平凡。 自1998年“开源”一词提出以来,开源已浩浩荡荡发展了二十二年。 所谓“无开源,不生态”,递归第七集,我们一起走近这个王者联盟。        演:陈银华 嘉       宾:于朵,单致豪,贺阮,堵俊平 制       片:孙健翔,李佳艳,谢星佳 后期指导:paulinesong, kylinlu 特别鸣谢:腾讯开源联盟 往期视频 「递归 」第6集 | 是鹅厂技术青年的模样 「递归」第5集 | 从网瘾少年到极客大神:没有什么是一段代码解决不了的 「递归」第4集 | 退役黑客带你走进白帽子的江湖 ?

    97040发布于 2020-07-02
  • 来自专栏findyi

    让你变厉害的7个底层思维

    职场&认知洞察 丨 作者 / findyi 这是findyi公众号分享的第89篇原创文章 如果把你的思维比做操作系统,那思维模型就是一个个App。 顶级的思维模型能提高你成功的可能性,并帮你避免失败。 华尔街大VFarnam Street曾这样描述思维模型:“思维模型是你大脑中用于做决策的工具箱。 我发现,正是因为正确使用了一些思维模型,才让我事半功倍。 很多时候,正确的思维方式比努力重要100倍。 今天和大家分享,能让你变得越来越厉害的7思维模型。 ---- — 7 — 系统思维 花半秒钟就看透事物本质的人和花一辈子都看不清事物本质的人注定是截然不同的命运。 我们如何快速看透事物本质? ---- 写在最后 以上7个能让你变得更厉害,甚至脱胎换骨的思维模型,就说完了。 这个世界哪有什么天才,哪有什么天赋异禀的人。 有的只不过是学会深度思考,不断迭代自身思维模型的人。

    99320发布于 2020-11-03
  • 来自专栏刷题笔记

    7-8 汉诺塔的非递归实现

    点这里 7-8 汉诺塔的非递归实现 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求 输入样例: 3 输出样例: a -> c a -> b c -> b a -> c b -> a b -> c a -> c 没有错,我用递归写✍的而且过了。。。。 (虽然这道题说了非递归实现) 汉诺塔,咱还真不会(C语言?老师讲过?,咱都还回去了) 感觉从B站学了一下?才懂了点:汉诺塔算法粗劣讲解以及编程实现 就是每一?‍ 1-2 汉诺塔的非递归实现 (25 分)点击传送~~~ 至于非递归? 给个链接⑧; 非递归的思想来实现汉诺塔问题的求解

    1.2K10发布于 2019-11-08
  • 来自专栏小樱的经验随笔

    1082 与7无关的数(思维题,巨坑)

    1082 与7无关的数 题目来源:                 有道难题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 一个正整数,如果它能被 7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数。 求所有小于等于N的与7无关的正整数的平方和。 例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155。 problemId=1082 分析:先找出不能被7整除的数,然后求它们的平方和,直接写肯定会TL,所以每次去找那个数,然后每次对10取余,找到余数不为7的数,每次去降低数的大小,然后本来以为应该会过的, 结果继续TL,我就无法理解了,为何会TL,当我把求不是7的倍数的平方和循环放在整个大循环里,AC了,无语了我!

    1.2K70发布于 2018-04-08
  • 来自专栏技术杂记

    一个运维人员的编程思维7

    人从最初的状态到今天,是用工具来划分时代的:石器时代、青铜时代、铁器时代、蒸汽时代、电气时代,信息时代,可见工具的重要性,作为生产力的基础(另一个是人自身),工具可以极大改变整体的生产效率和资源分配格局

    54440发布于 2021-11-26
  • 来自专栏凹凸玩数据

    7思维导图带你掌握 “Python学习路线”

    文末获取高清思维导图 当然,不管你是做什么的,只要是和Python相关的,这个学习路线绝对都是好用的。

    2.5K22发布于 2020-08-12
  • 来自专栏python学习教程

    7思维导图带你掌握 “Python学习路线”

    因此,我特别不希望有些朋友不要一上来就学习numpy、pandas、matplotlib相关库,只有学好了Python基础后,编写Python代码才会得心应手。

    69411发布于 2020-08-12
  • 来自专栏深度学习之tensorflow实战篇

    递归与伪递归区别,Python 实现递归与尾递归

          递归函数在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函 数。(1) 递归就是在过程或函数里调用自身。 (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 递归一般用于解决三类问题:  (1)数据的定义是按递归定义的。(n的阶乘)    (2)问题解法按递归实现。 (回溯)    (3)数据的结构形式是按递归定义的。(二叉树的遍历,图的搜索) 递归的缺点:   递归解题相对常用的算法如普通循环等,运行效率较低。 因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储,因此递归次数过多容易造成栈溢出。 小结 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。 针对尾递归优化的语言可以通过尾递归防止栈溢出。

    2.4K10发布于 2019-02-14
  • 来自专栏深度学习之tensorflow实战篇

    递归与伪递归区别,Python 实现递归与尾递归

          递归函数在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函 数。(1) 递归就是在过程或函数里调用自身。 (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 递归一般用于解决三类问题:  (1)数据的定义是按递归定义的。(n的阶乘)    (2)问题解法按递归实现。 (回溯)    (3)数据的结构形式是按递归定义的。(二叉树的遍历,图的搜索) 递归的缺点:   递归解题相对常用的算法如普通循环等,运行效率较低。 因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储,因此递归次数过多容易造成栈溢出。 小结 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。 针对尾递归优化的语言可以通过尾递归防止栈溢出。

    2.8K70发布于 2018-03-16
  • 来自专栏个人分享

    思维体系---技术思维、业务数据思维、产品思维、复合思维

    那么总的来说,我分为四种思维模式: 一、技术思维   卧槽!干代码!出bug了!没错,这就是你进步的源头。 二、业务数据思维   业务思维上,更多会考虑到业务本身的价值,具有较强的业务敏感度。 三、产品思维   对于产品思维,很多人会想到,程序员总想砍死产品经理,改来改去哈哈。。但是其实产品思维的核心在于 与人打交道、与业务打交道、与技术打交道 以及 事物的推动作用。 那么产品思维,我们就可以概括为:业务本身、技能专业度、洞察力、心理学、全局观、高情商以及耐心,是一种复合的思维。 四、复合思维    毕竟本人也是技术出身,所以对于技术的感官更加强烈哈哈。。 但是如果,你能在精通专业技术的基础上,融合 技术 业务 产品 的体系化思维模式,我称之为复合型思维,因为这种思维模式,包含强大的同理心,包含敏锐的洞察力,同时也包含一定的视野广度,需要结合心理学、哲学、

    1.5K10发布于 2018-09-06
  • 来自专栏技术一点点成长

    递归与尾递归

    前言:   本博客前面介绍了不少跟递归的思想相关的例子,比如“汉诺塔”,“八皇后”等。因最近又回忆起“尾递归”,故本文通过2个例子再跟大伙儿探讨一下尾递归。。。 什么是尾递归: 当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归递归实例一: 求阶乘! 1 package com.gdufe.recure; 2 3 import java.util.Scanner; 4 5 public class Factorial { 6 7 1 package com.gdufe.recure; 2 3 import java.util.Scanner; 4 5 public class Palindrome { 6 7 true 尾递归的意义: 从以上尾递归的实现过程当中我们可以发现,回归过程中不用做任何操作(运算),这样的一种特性使得在执行尾递归的过程时,能够被某些特定编译器进行优化,减少内存空间的消耗。

    1.4K20编辑于 2022-08-09
  • 来自专栏函数式编程语言及工具

    restapi(7)- 谈谈函数式编程的思维模式和习惯

    不过也不是没有任何收获,在搬砖的过程中我似乎发现了一些现象和造成这些现象背后的原因及OOP思维、习惯模式。 这正是OO编程的思维模式:因为程序状态体现在每行代码上,随时可以检查,验证思路,所以OOP比较容易上手(相对函数式编程而言)。 回顾一下函数式编程:好像很难按照自然逻辑思维顺序来实现一个功能,这是因为函数式编程是一种嵌套式间接性的编程模式,即程序是在某种嵌套里运行的。 这个例子也体现了函数式编程的思维模式。

    94340发布于 2019-10-08
  • 来自专栏石云升

    高效能人士的7个习惯 - 双赢思维

    双赢思维指的是,两个人之间合作,一定要双方都获得价值。如果我赚钱,是建立在你损失的基础之上,那我就不干。 想要养成双赢思维,在考虑决策的时候,要习惯性从对方角度出发。在面临你赢我输的局面,一定要想想有没有 其他选择。

    61830编辑于 2022-08-25
领券