具现化骨牌描述递归方法-递归判断

那么从之前随机生产的数据得到较多量[骨牌存储箱]的数据。

我们将利用这部分数据进行演示关于地递归的利用技巧。

以下注释较多。如果不喜欢的话可以不看,并不影响对递归方法的理解。

  • 递归代码:

 1 /*
 2     1、首先:
 3         假设情形:现在要利用现有的骨牌进行多米诺骨牌游戏。
 4     2、拍列:
 5         我们现在要知道第一骨牌推到的具体是那些(可多骨牌推到-多数据流同时进行就是码SQL的一大优势,所以小弟劝戒大家能不用游标就不用游标),之后往后面继续排序。排序可行的规则可以参照现实。
 6     3、推牌:
 7         我们根据已经排列好的牌,开始推到。在牌进行的过程我们可以在这个过程添加过程标识。
 8     */
 9
10     WITH 排列 AS (
11     SELECT DENSE_RANK()OVER(ORDER BY 骨牌类型) AS LogoID -- 给骨牌分组,就是要同时进行推到的骨牌组
12     ,ROW_NUMBER()OVER(PARTITION BY 骨牌类型 ORDER BY 骨牌重量) AS OrderID -- 给骨牌排序,这边就是以骨牌重量从轻的骨牌到重的骨牌排序
13     ,[骨牌存储箱].*
14     FROM [骨牌存储箱] WITH(NOLOCK)
15     WHERE 1+1=2
16     )
17     -- DROP TABLE #排列
18     SELECT * INTO #排列
19     FROM 排列 WITH(NOLOCK)
20     CREATE CLUSTERED INDEX PK_LogoID ON #排列(LogoID);
21
22     WITH
23     递归 AS(
24         SELECT *
25         ,1 AS NCount -- 我们可以在递归过程给递归的牌子做标记(任意发挥)
26         FROM #排列 初始
27         WHERE 初始.OrderID = 1 -- 第一块推到的
28
29         UNION ALL
30
31         SELECT 递归源.*
32         -- 以下:这个这个递归方法最重要的点,就是递归过程要执行的操作。
33             -- 举个现实的例子:当客户存在消费冲突的时候,也许在1天的时间内为客户冲动期,过了1天后至3天内的都为客服成效调解期。那么我们要确定客服成效期是在那个时间段,我们需要从时间上推导,在之前1天无冲动期,或者突然出现新状况投诉。
34         ,CASE
35             WHEN 递归.NCount <= 3
36             THEN NCount + 1
37             ELSE 1
38          END
39         FROM #排列 递归源
40         JOIN 递归 ON 递归源.LogoID= 递归.LogoID
41         WHERE 递归源.OrderID = 递归.OrderID + 1
42     )
43     SELECT 递归.*
44     FROM 递归
45     ORDER BY LogoID,骨牌重量
46     OPTION(MAXRECURSION 0)-- 0表无限递归次数

  • 执行结果:

以上仅代表个人见解,不喜着可以呲之以鼻,但是请勿喷!

时间: 2024-10-01 12:16:21

具现化骨牌描述递归方法-递归判断的相关文章

GeoServer中使用样式化图层描述符(sld)加注记

现有一个shp格式的道路注记文件,用点来表示注记的位置,属性表中保存每个点对应的字,在QGIS中打开如下图所示 它的属性表如下 现需要把道路数据和它的注记发布为WMS服务,通过GeoServer直接发布服务的话会显示默认的样式,这个版本中(2.6.2)默认情况下点用红色的方块表示,无法表示注记信息.因此需要使用样式化图层描述符(sld)来设置样式,本质就是个XML文件. 首先可以从这里http://docs.geoserver.org/stable/en/user/styling/sld/coo

A1135 | 红黑树判断:审题、根据“先序遍历”和“BST树”的条件生成后序遍历、递归判断

对A1135这题有心里阴影了,今天终于拿下AC.学习自柳神博客:https://www.liuchuo.net/archives/4099 首先读题很关键: There is a kind of balanced binary search tree named red-black tree in the data structure------ 红黑树首先应该是一棵BST树,不然从何谈起维护二分查找结构? 所以第一步就应该根据先序遍历以及BST树的特性来判断是否是一棵BST树,然后根据这两个条

Java实验--关于简单字符串回文的递归判断实验

首先题目要求写的是递归的实验,一开始没注意要求,写了非递归的方法.浪费了一些时间,所谓吃一堑长一智.我学习到了以后看实验的时候要认真看实验中的要求,防止再看错. 以下是对此次的实验进行的分析: 1)递归是运用到了栈的思想 2)回文是一段从中间开始倒置的文字,回代的过程中出现不同的符号的时候就说明这段文字不是回文了 根据上面对回文判断的分析,就拿最简单的121来说,要每个字符判断直至2所在的位置,然后依次回代判断前面的1和后面的1的位置(上述的描述就类似于栈的思想). 有关于栈还有递归其实我并不熟

用递归判断字符串是否为回文

程序基本思路: 1.首先判断若字符串的长度为0或1,如果是,则这个字符串是回文序列,程序直接结束 2.若字符串长度大于1,先将字符串转化成字符数组,定义旗帜flag.字符数组头和尾标识,将字符数组首地址和以上定义传给递归方法 3.用头尾标记数组头尾字符来进行一一比较,如果一致,继续递归调用自身,直至达到递归终止条件.如果中途有不匹配的,返回输出字符串不是回文序列. 递归终止条件为头尾标记相等或相差为1,返回输出字符串是回文序列. import java.util.Scanner; public

字符串回文现象的递归判断

前面谈到了递归的一些思想,还有概念上的一些理解,这里试着用递归解决一些问题.比如回文. 回文是一种字符串,它正着读和反着读都是一样的.比如level,eye都是回文.用迭代的方法可以很快地判断一个字符串是否为回文.用递归的方法如何来实现呢? 首先我们要考虑使用递归的两个条件:澳门赌场玩法 第一:这个问题是否可以分解为形式相同但规模更小的问题? 第二:如果存在这样一种分解,那么这种分解是否存在一种简单情境? 先来看第一点,是否存在一种符合条件的分解.容易发现,如果一个字符串是回文,那么在它的内部一

golang 递归判断回文字符串

判断回文字符串是个比较经典的问题. 思路就是拿第一个字符和最一个字符比较,如果不等退出,相同的话继续刚刚的过程,直到第一个字符和最后一个字符相遇或者他们的距离为1时.说明他们是回文字符串. 下面的代码会忽略空白字符 如"1   1  2 1"会让为是回文字符串. golang package main import (     "fmt"     "os"     "strings"     "unicode/utf

递归判断多维数组中对象是否有值

一个项目需求中,需要判断数组中的对象是否有值,先看下数据结构: let list = [ { value: "1", children: [ { value: "2", }, { value: "3", children: [ { value: "4", }, ] } ] }, { value: "5", } ] 那么如何进行判断多层子集是否有值呢?这里就会用到递归来实现 function ruleVali

Java 用递归判断字符串是否可以回文

设计思想: 判断字符串是否可以回文,首先字符串长度为0,或只有一个字符,即字符串长度为1是可以回文的:再然后字符串长度大于1,让第一个字符和最后一个比较,若相等,则用递归,调用函数比较第二个和倒数第二个,以此类推. 源代码: package test2; import java.util.Scanner; public class jiecheng { public static void main(String[] args) { // TODO 自动生成的方法存根 System.out.pr

递归判断字符串是否为回文

源代码 package test; import java.util.Scanner; public class Palindrome { public static void main(String[] args) {  System.out.println("请输入判断的字符串");  Scanner scan=new Scanner(System.in);  String str=scan.next();  int n = str.length();  boolean flag=