本文已做成视频教程投稿b站(视频版相对文本版有一些改进),点击观看视频教程 本文主要通过三个实例来帮助大家理解递归(其展示动画已上传B站): 谢尔宾斯基三角形(Sierpinski Triangle),点击观看动画 汉诺塔(Tower of Hanoi),点击观看动画 迷宫探索(Maze Exploring),点击观看动画 本文代码已上传到github:https://github.com/BigShuang/recursion-with-turtle 本文参考文献:Problem Solvin…
不论今天的计算机技术变化,新技术的出现,所有都是来自数据结构与算法基础.我们需要温故而知新.        算法.架构.策略.机器学习之间的关系.在过往和技术人员交流时,很多人对算法和架构之间的关系感到不可理解,算法是软的,架构是硬的,难道算法和架构还有什么关系不成?其实不然,算法和架构的关系非常紧密.在互联网时代,我们需要用算法处理的数据规模越来越大,要求的处理时间越来越短,单一计算机的处理能力是不可能满足需求的.而架构技术的发展,带来了很多不同特点的分布式计算平台.算法为了能够应用到这些分布…
问题 一个枪手打靶,靶从外向内有1-10分(考虑脱靶得0分),打十枪,求枪手最后得90分的概率. 解决思路 一.穷举 考虑10重for循环,累计十次得分和为90者,求得概率.该法通用性差,效率低,但容易想到. 二.映射 穷举共1110种可能,即(1e10)11.则考虑10进制数N,将其遍历,从0到1110-1,映射到11进制,解出每种可能下10次的得分,累计为90则计入. 注意:1110超出了int的范围,要考虑BigInteger.或者以字符串来计算大整数. 三.递归 从动态规划角度思考. f…
using Maticsoft.Common; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Maticsoft.Web.cest { public partial class WebForm1 : Syste…
问题 求两个整型变量的和,不能使用四则运算,但可以使用位运算. 思路 以二进制形式,考虑两个整数相加: a = 01101001b b = 11100111b s =  ???????? 一个常见的结论是: 我们在进行二进制加法的时候(类比十进制加法),若无进位,则直接写上结果:若有进位,则写一个进位标志,作为累计,在高位计算时加入. 也就是说,结果是由截断二进制位和及其进位标志相加而得的. 思考:两个数的和 == 截断二进制位和+进位和,这种转化分解是否可行? 证明:讨论两个1bit相加出现的…
本章内容: 深浅拷贝 函数(全局与局部变量) 内置函数 文件处理 三元运算 lambda 表达式 递归(斐波那契数列) 冒泡排序 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy #定义变量 数字.字符串 n1 = 123 #n1 = 'nick' print(id(n1)) #赋值 n2 = n1 print(id(n2)) #浅拷贝 n3 = copy.copy(n1) print(id(n3)) #…
 一 .递归算法简介 在数学与计算机科学中,递归是指在函数的定义中使用函数自身的方法. 递归算法是一种直接或者间接地调用自身算法的过程.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解.递归算法解决问题的特点: (1) 递归就是在过程或函数里调用自身. (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口. (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低.所以一般不提倡用递归算法设计程序. (4) 在递归调用的过程当中…
一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #include "6_3_part1_for_chapter9.h" typedef struct { int key; }SElemType; //静态查找表的顺序储存结构 #define ElemType SElemType #define KeyType int typedef struc…
一.基本概况 在我的项目中,常常会用到树形结构的数据,最为明显的就是左边菜单栏,类似于window folder一样的东西. 而我之前一直是借助前端封装好的ZTree等工具实现展示,而后台则通常使用递归进行数据的查找.通常,我们在设计数据库表的时候,一般会使用三个字段:id,name,pid.如下图所示: 二.代码实现 首先是建立实体类: <span style="font-family:KaiTi_GB2312;font-size:18px;"> private Stri…
要求 已知akm函数如下: { n+1 while m=0 }                          => Rule I akm(m,n)= { akm(m-1,1) while n=0 }                => Rule II { akm(m-1,akm(m,n-1)) otherwise } => Rule III 写出递归与非递归算法,并输出调用过程. 实现 参见https://github.com/bajdcc/ALGImplements/blob/ma…