递归函数

前端学习(444):递归函数

孤街醉人 提交于 2020-01-19 15:11:37
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> var sum=0; var i=0; function fn8(){ if(i===100){ return;//跳出 } sum+=i; i++; fn8(); } fn8(); console.log(sum); </script> </body> </html> 运行结果 来源: CSDN 作者: 你知道歌谣吗? 链接: https://blog.csdn.net/weixin_43392489/article/details/104040426

全排列 递归和函数 两种方法

十年热恋 提交于 2020-01-19 05:09:58
直接上函数 # include <algorithm> # include <iostream> using namespace std ; int main ( ) { string s ; cin >> s ; do { cout << s << endl ; } while ( next_permutation ( s . begin ( ) , s . end ( ) ) ) ; return 0 ; } dfs # include <iostream> using namespace std ; int p [ 100 ] ; //记录相同的数字 int a [ 100 ] ; //存下来 int n ; //输入 void f ( int k ) { if ( k == n + 1 ) //当都弄完一遍的时候 { for ( int i = 1 ; i <= n ; i ++ ) { cout << a [ i ] ; } cout << endl ; } for ( int i = 1 ; i <= n ; i ++ ) //每次都是从1开始 { if ( p [ i ] == 1 ) //如果在当前的数中这个数原来被a存过 就不能再要了 continue ; a [ k ] = i ; //报存 p [ i ] = 1 ; //标记 f ( k + 1 ) ; p

剑指offer——java刷题总结【三】

最后都变了- 提交于 2020-01-19 03:36:07
Note 题解汇总: 剑指offer题解汇总 代码地址: Github 剑指offer Java实现汇总 点击目录中的题名链接可直接食用题解~ 有些解法博文中未实现,不代表一定很难,可能只是因为博主太懒```(Orz) 如果博文中有明显错误或者某些题目有更加优雅的解法请指出,谢谢~ 目录 题号 题目名称 21 栈的压入、弹出序列 22 从上往下打印二叉树 23 二叉搜索树的后序遍历序列 24 二叉树中和为某一值的路径 25 复杂链表的复制 26 二叉搜索树与双向链表 27 字符串的排列 28 数组中出现次数超过一半的数字 29 最小的K个数 30 连续子数组的最大和 正文 21、栈的压入、弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 题目分析 解法一: 设置一个指向pop数组的index指针,遍历push数组,针对每一个遍历值做如下操作: 1、将当前遍历值压入栈中; 2、查看栈顶元素和pop数组的当前弹出值是否相等,如果相等则模拟出栈操作,将stack的栈顶元素弹出,并对pop数组的指针进行后移

二叉树---中续遍历(递归)

蓝咒 提交于 2020-01-17 23:04:25
@Adrian 二叉树中序遍历的实现思想是: 访问当前节点的左子树; 访问根节点; 访问当前节点的右子树; 以图 1 为例,采用中序遍历的思想遍历该二叉树的过程为: 访问该二叉树的根节点,找到 1; 遍历节点 1 的左子树,找到节点 2; 遍历节点 2 的左子树,找到节点 4; 由于节点 4 无左孩子,因此找到节点 4,并遍历节点 4 的右子树; 由于节点 4 无右子树,因此节点 2 的左子树遍历完成,访问节点 2; 遍历节点 2 的右子树,找到节点 5; 由于节点 5 无左子树,因此访问节点 5 ,又因为节点 5 没有右子树,因此节点 1 的左子树遍历完成,访问节点 1 ,并遍历节点 1 的右子树,找到节点 3; 遍历节点 3 的左子树,找到节点 6; 由于节点 6 无左子树,因此访问节点 6,又因为该节点无右子树,因此节点 3 的左子树遍历完成,开始访问节点 3 ,并遍历节点 3 的右子树,找到节点 7; 由于节点 7 无左子树,因此访问节点 7,又因为该节点无右子树,因此节点 1 的右子树遍历完成,即整棵树遍历完成; 二叉树采用中序遍历得到的序列为: 4 2 5 1 6 3 7 递归中序遍历: # include <stdio.h> # include <string.h> # define TElemType int //构造结点的结构体 typedef struct

SQL递归函数

房东的猫 提交于 2020-01-17 04:06:31
生成一张表,添加数据 DROP table IF EXISTS Dept ; create table Dept ( ID int , ParentID int , msg varchar ( 20 ) ) insert into Dept select 1 , 0 , '中国' insert into Dept select 2 , 1 , '上海' insert into Dept select 3 , 1 , '浙江' insert into Dept select 4 , 2 , '普陀区' insert into Dept select 5 , 3 , '杭州' insert into Dept select 6 , 5 , '西湖区' insert into Dept select 7 , 6 , '双浦镇' go 递归函数: Create function GetChild ( @ID varchar ( 10 ) ) returns @t table ( ID varchar ( 10 ) , ParentID varchar ( 10 ) , Level int , msg varchar ( 20 ) ) as begin declare @i int set @i = 1 --insert into @t select @ID,@ID,0 --当前级,本级

【算法导论】第4章 分而治之 (3)

谁都会走 提交于 2020-01-17 00:19:54
Introduction to Algorithms - Third Edition Part I. Foundations Chapter 4. Divide-and-Conquer ★ \bigstar ★ 4.6 主定理的证明 4.6.1 取正合幂时的证明 假设 n n n 是 b > 1 b>1 b > 1 的正合幂,其中 b b b 不必是整数,分析主方法中的递归式 (4.20) T ( n ) = a T ( n / b ) + f ( n ) T(n) = aT(n/b) + f(n) T ( n ) = a T ( n / b ) + f ( n ) 。 将分析分成 3 个引理来说明。 第1个引理,将求解主递归式的问题,归约为对包含总和的表达式求值的问题。 第2个引理,确定这个总和的界限。 第3个引理,将前两个结合一起,证明:在 n n n 是 b b b 的正合幂的情况下,主定理成立。 引理 4.2 设 a ≥ 1 a \ge 1 a ≥ 1 和 b > 1 b > 1 b > 1 是常数,设 f ( n ) f(n) f ( n ) 是定义在 b b b 的正合幂上的非负函数。在 b b b 的正合幂上定义 T ( n ) T(n) T ( n ) : T ( n ) = { Θ ( 1 ) if n = 1 a T ( n / b ) + f ( n ) if

基于深度学习的图像超分辨率方法 总结 2018.6

不打扰是莪最后的温柔 提交于 2020-01-16 08:24:00
基于深度学习的SR方法 懒得总结,就从一篇综述中选取了一部分基于深度学习的图像超分辨率方法。 原文:基于深度学习的图像超分辨率复原研究进展 作者:孙旭 李晓光 李嘉锋 卓力 北京工业大学信号与信息处理研究室 来源:中国知网 1.基于前馈深度网络的方法 前馈深度网络是典型的深度学习模型之一。网络中各个神经元从输入层开始,接收前一级输入,并输入到下一级, 直至输出层。整个网络中无反馈, 可用一个有向无环图表示。 在深度学习的SR问题中,前馈深度网络能够较好地学习低分辨率图像到高分辨率图像之间的对应关系。在输入层中,它采用卷积的方法提取输入图像的局部特征模式,单向传递给隐含层, 随着隐含层网络层数的加深而学习得到更深层级的特征;最后,由输出层得到重建图像。典型的前馈深度网络包括多层感知器和卷积神经网络(CNN)。 按前馈深度网络的网络类型可以分为以下几类:基于卷积神经网络的方法 (Super resolution using convolution neural network,SRCNN) ;基于极深网络的方法 (Very deep networks for SR,VDSR) ;基于整合先验的卷积神经网络的方法 (SR-CNN with Prior,SRCNN-Pr) ;基于稀疏编码网络的方法(Sparse coding based network,SCN) 和基于卷积稀疏编码的方法

替罪羊树(重量平衡树)入门

泪湿孤枕 提交于 2020-01-13 07:30:20
扯 学校清明竟然给放两天假期,心血来潮突然想去学习平衡树。 可是我太弱了学不会有旋转操作的treap和splay,这可怎么办啊qaq。 诶?我以前好像看过一种叫做替罪羊树的平衡树可以不用旋转操作,那还是学这个吧…… 替罪羊树 用处 替罪羊树是一种平衡树,支持插入,删除,查找第k小元素,查找元素的排名等操作 什么数据结构优雅? 暴力即是优雅! 替罪羊树就是一种暴力平衡树,旋转?不存在的! 替罪羊树保持平衡的方法就是暴力重构,即当树不平衡时拍扁重新建树,那么如何才能知道一棵树是否平衡呢? 在替罪羊树中选用了一种叫做平衡因子的东西,听起来很高端,其实就是一个0.5~1之间的任意浮点数,保持平衡的方法是这样的: 如果一棵树的左子树/右子树的 存在的 节点数量大于这棵树的 存在的 节点数量*旋转因子,那么就要重构这棵树 为什么我特意标出了是存在的节点数呢?是因为替罪羊树的删除不是真正的删除,而是惰性删除。 所以我们就可以写出代表替罪羊树的每个节点的结构体 1 const double alpha = 0.75; //旋转因子 2 struct Node { 3 Node* ch[2]; //左右子节点 4 int key,siz,cover; //key是值,siz是以该节点为根的树的存在的节点数,cover是所有节点数量 5 bool exist; //exist标志该节点是否被删除 6

用python的递归函数实现统计本地文件夹里面的文件数量(文件夹里面还包含文件夹)

懵懂的女人 提交于 2020-01-07 06:58:13
一个偶然的机会,公司的一位JAVA开发工程师说他留在上家公司的面试题:统计文件夹里面的文件数量 咋一听这题,不是很简单吗? python新学生的我就想试一试,然后我开始剖析这道题了 第一,统计文件夹里面的文件数量,那我得用到len() 函数 是不是一步就解决了,找了我本地的一个文件夹试了下,我去,这行不通呀   文件夹里面还有文件夹 ,这下还要加层判断了,然后用上递归函数。 原来这题并不算难,只不过用到的API或者方法多一点,还有就是逻辑思维,一不留神就搞错了 下面就是写下来的代码: import osfileCount=0fileDirCount=0def getFileCount(filePath): global fileCount,fileDirCount os.chdir(filePath) fileList = os.listdir() for file in fileList: if os.path.isdir(file): fileDirCount = fileDirCount+1 getFileCount(filePath+'\\'+file) else: fileCount = fileCount+1 return fileCount,fileDirCountif __name__ == "__main__": print(getFileCount("D:\

用python的递归函数实现统计本地文件夹里面的文件数量(文件夹里面还包含文件夹)

杀马特。学长 韩版系。学妹 提交于 2020-01-05 00:43:03
一个偶然的机会,公司的一位JAVA开发工程师说他留在上家公司的面试题:统计文件夹里面的文件数量 咋一听这题,不是很简单吗? python新学生的我就想试一试,然后我开始剖析这道题了 第一,统计文件夹里面的文件数量,那我得用到len() 函数 是不是一步就解决了,找了我本地的一个文件夹试了下,我去,这行不通呀   文件夹里面还有文件夹 ,这下还要加层判断了,然后用上递归函数。 原来这题并不算难,只不过用到的API或者方法多一点,还有就是逻辑思维,一不留神就搞错了 下面就是写下来的代码: import osfileCount=0fileDirCount=0def getFileCount(filePath): global fileCount,fileDirCount os.chdir(filePath) fileList = os.listdir() for file in fileList: if os.path.isdir(file): fileDirCount = fileDirCount+1 getFileCount(filePath+'\\'+file) else: fileCount = fileCount+1 return fileCount,fileDirCountif __name__ == "__main__": print(getFileCount("D:\