首页 > 其他分享 >递归详解

递归详解

时间:2022-08-31 13:00:06浏览次数:43  
标签:递归 Recursion back dataSet 详解 result size

递归详解

在计算机科学领域, 递归是用于处理一类具有相同子问题处理方式的问题;
是数学归纳法, 数学递推公式在计算机中的应用

The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit repetitions.
--- by Niklaus Wirth, Algorithms + Data Structures = Programs, 1976

用递归的方法来解决问题的关键, 在于准确找到子问题

递归的简单应用

1. 阶乘

计算 \(n! = n *(n-1)* \dots *2* 1\)

即令 \(f(n) = n * f(n-1)\)

void Recursion_Factorial(int n)
{
    if(n == 1) return n;
    return n * Recursion_Factorial(n-1);
}

2. 寻找所有子集

template<class T>
void Recursion_Subset(vector<T> dataSet, vector<vector<T>>& result)
{
	if (dataSet.empty()) { result.push_back({}); }
	else
	{
		T data = dataSet.back();
		dataSet.pop_back();
		Recursion_Subset(dataSet, result);
		int size = result.size();
		for (int i = 0; i < size; i++)
		{
			result.push_back(result[i]);
			result.back().push_back(data);
		}
	}
	return;
}

标签:递归,Recursion,back,dataSet,详解,result,size
From: https://www.cnblogs.com/InfField/p/16642715.html

相关文章

  • k8s hpa扩展伸缩详解
    k8shpa扩展伸缩详解首先来说一下pod资源的分配: limits:申请内存最大值,超过这个值就会触发oom requests:申请内存最小值(此处个人将他理解为pod预分配内存。为什么这样......
  • go语言函数详解-01
    go语言函数声明每一次函数在调用时都必须按照声明顺序为所有参数提供实参(参数值),在函数调用时,Go语言没有默认参数值,也没有任何方法可以通过参数名指定形参,因此形参和返回值......
  • 开源交流丨任务or实例 详解大数据DAG调度系统Taier任务调度
    课件获取:关注公众号“数栈研习社”,后台私信“Taier”获得直播课件视频回放:点击这里ChunJun开源项目地址:github丨gitee喜欢我们的项目给我们点个__STAR!STAR!!STAR!!!(重......
  • MySQL 覆盖索引详解
    1.什么是索引?索引(在MySQL中也叫“键key”)是存储引擎快速找到记录的一种数据结构,通俗来说类似书本的目录,这个比方虽然被用的最多但是也是最恰如其当的,在查询书本中的某......
  • kafka详解(一)--kafka是什么及怎么用
    kafka是什么在回答这个问题之前,我们需要先了解另一个东西--eventstreaming。什么是eventstreaming我觉得,eventstreaming是一个动态的概念,它描述了一个个event("s......
  • ps命令详解
    ps命令详解-wangkangluo1-博客园 https://www.cnblogs.com/wangkangluo1/archive/2011/09/23/2185938.html名称:ps使用权限:所有使用者使用方式:ps[options][--help]......
  • explicit关键字详解
    https://blog.csdn.net/l2563898960/article/details/97769569    ......
  • CMD findstr命令详解
    一、作用findstr是Window系统自带的命令,用于查找某路径下指定的一个或多个文件中包含某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符串所在的文件名。其......
  • try - with - resources详解
    https://blog.csdn.net/tianzhonghaoqing/article/details/118720380 概述try-with-resources自JDK7引入,在JDK9中进行了改进,使得用户可以更加方便、简洁的使用try-with-......
  • 如何从容的制作图片上传图片--File,Blob,BASE64详解及转换方法
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助File()File() 构造器创建新的File对象实例。语法varmyFile=newFile(bits,name[,options]);......