递归迭代动态规划「建议收藏」

递归迭代动态规划「建议收藏」一、定义递归:程序调用自身,从顶部将问题分解,其问题与其子问题是同一概念。通过解决掉所有分解出来的小问题,来解决整个问题。迭代:利用变量的原值推算出变量的下一个值。递归中一定有迭代,但是迭代中不一定有递归。动态规划:通常与递归相反,其从底部开始解决问题。将所有小问题解决掉,进而解决的整个问题。为了节约重复求相同子问题的时间,引入一个数组,把所有子问题的解存于该数组中,动态规划算法是空间换时间的算法。动态规划可以递归地实现,也可以非递归(循环的方法)地实现。运行速度:动态规划>迭代&gt

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、定义

递归:程序调用自身,从顶部将问题分解,其问题与其子问题是同一概念。通过解决掉所有分解出来的小问题,来解决整个问题。

迭代:利用变量的原值推算出变量的下一个值。递归中一定有迭代,但是迭代中不一定有递归。

动态规划:通常与递归相反,其从底部开始解决问题。将所有小问题解决掉,进而解决的整个问题。为了节约重复求相同子问题的时间,引入一个数组,把所有子问题的解存于该数组中,动态规划算法是空间换时间的算法。

动态规划可以递归地实现,也可以非递归(循环的方法)地实现。

运行速度:动态规划 > 迭代 > 递归

二、递归

递归有两个特点:

1)函数自身调用自身;

2)使用递归时必须要有一个明确的出口;

递归分两个阶段:

1)递推:把复杂的问题推到比原问题简单的子问题的求解;

2)回归:当获取最简单的情况后,逐步返回,依次得到复杂问题的解;

int fibonacci(int n)
{
	if (n <= 2)
		return 1;
	else
		return fibonacci(n - 1) + fibonacci(n - 2);
}

Jetbrains全家桶1年46,售后保障稳定

三、迭代

由第一个数和第二个数去求解第三个数,由第二个数和第三个数去求解第四个数,以此类推。

int fibonacci(int n)
{
	if (n <= 2)
		return 1;
		
	int first = 1, second = 1, answer;
	for (int i = 3; i <= n; i++)
	{
		answer = first + second;
		first = second;
		second = answer;
	}
	
	return answer;
}

四、动态规划

子问题的解存储在一张表格里,这样每个子问题只用计算一次。但是需要额外的空间以节省时间。

int fibonacci(int n)
{
	vector <int> dp;
	dp.push_back(0);
	dp.push_back(1);
 
	for (int i = 3; i <= n; i++)
		dp.push_back(dp[i-1] + dp[i-2]);
 
	return dp[n];
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222959.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【新秀疯狂UML系列】——面向对象的技术

    【新秀疯狂UML系列】——面向对象的技术

    2022年1月3日
    59
  • Javascript document.all用法「建议收藏」

    Javascript document.all用法「建议收藏」代码2:    但是常常name可以相同(如:用checkbox取用户的多项爱好的情况)              alert(document.all.aaa(0).value)  //显示a1    alert(document.all.aaa(1).value)  //显示a2    alert(document.all.bbb(0

    2022年7月15日
    22
  • RGB-D(深度图像) & 图像深度「建议收藏」

    RGB-D(深度图像) & 图像深度「建议收藏」RGB-D(深度图像)  深度图像=普通的RGB三通道彩色图像+DepthMap  在3D计算机图形中,DepthMap(深度图)是包含与视点的场景对象的表面的距离有关的信息的图像或图像通道。其中,DepthMap类似于灰度图像,只是它的每个像素值是传感器距离物体的实际距离。通常RGB图像和Depth图像是配准的,因而像素点之间具有一对一的对应关系

    2022年5月28日
    33
  • oracle number类型 p、s参数说明[通俗易懂]

    oracle number类型 p、s参数说明[通俗易懂] oraclenumber类型采用科学计数法表示,p表示有效数字的个数,s表示精度;如果定义字段类型为number(p,s)则该字段所能表示的最大正数是(10p-1)*10-s最小负数-(10p-1)*10-s;所有该范围之间的数字均可根据精度四舍五入后插入该字段;否则将会报错。  

    2022年7月24日
    8
  • 海量图片存储解决方案

    海量图片存储解决方案当今世界,互联网、大数据应用迅猛发展,物联网、人工智能、云计算技术日新月异,随之而来的是各种企业和个人应用持续不断地产生亿级甚至是百亿级的海量小文件。这些小文件的元数据管理、存储性能以及访问效率等问题因而成为学术界和工业界公认的难题。例如,国内目前最大的电商网站淘宝存储的商品图片超过200亿张,这些文件的平均大小仅为15KB左右,国外著名的社交网站Facebook存储的图片总量更是超…

    2022年7月12日
    22
  • 卡方分布、方差分析

    卡方分布:首先我们先把现代数学中的数理统计中的卡方分布已经烂大街的定义先放下来,我先回到卡方检验的诞生的之地。在1900年,皮尔森发表了著名的关于卡方检验的文章,该文章被认为是现代统计学的基石之一。在该文章中,皮尔森研究了拟合优度检验:……(这里之所以加点的原因是因为,下面的话很不好理解,我们举一个实际一点的例子就容易理解了。)下面图片有个赌场的色子(注意阅读下面红色字体)…

    2022年4月8日
    119

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号