递归与递推

python递推和递归_递归递推区别分析与例题总结 递归与递推特点递归(recursive)运行过程中自我调用,求解过程分为回溯和递推两个过程,占用内存多(栈数先积累后收缩,有可能爆栈),代码简洁但低效。尾递归和递归区别⬇function story() {从前有座山,山上有座庙,庙里有个老和尚,一天老和尚对小和尚讲故事:story() // 尾递归,进入下一个函数不再需要上一个函数的环境了,得出结果以后直接返回。}function story()... 阅读详情

递归与递推

在这里插入图片描述

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		for (int i = 0; i < 1 << n; i ++) {
			for (int j = 0; j < n; j ++) {
				if ((i >> j & 1) == 1) {
					System.out.print(j + 1 + " ");
				}
			}
			System.out.println();
		}
	}

}

在这里插入图片描述

import java.util.Scanner;

public class Main {
	
	static int n, cnt = 0;
	static int[] num = new int[10];
	static boolean[] vis = new boolean[10];
	
	static void dfs(int x) {
		if (x == n + 1) {
			for (int i = 1; i <= n; i ++) {
				System.out.print(num[i] + " ");
			}
			System.out.println();
		}
		for (int i = 1; i <= n; i ++) {
			if (!vis[i]) {
				num[x] = i;
				vis[i] = true;
				dfs(x + 1);
				vis[i] = false;
			}
		}
	}
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		n= in.nextInt();
		dfs(1);
	}

}

在这里插入图片描述

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		long a = 0, b = 1, c;
		System.out.print(a);
		for (int i = 1; i < n; i ++) {
			c = a + b;
			a = b;
			b = c;
			System.out.print(" " + a);
		}
	}

}

在这里插入图片描述

import java.util.Scanner;

public class Main {
	
	static char[][] g = new char[10][10];
	static int[] dx = new int[]{0, -1, 0, 1, 0};
	static int[] dy = new int[]{0, 0, 1, 0, -1};
	
	static void turn(int x, int y) {
		for (int i = 0; i < 5; i ++) {
			int tx = x + dx[i];
			int ty = y + dy[i];
			if (tx >= 0 && tx < 5 && ty >= 0 && ty < 5) {
				g[tx][ty] ^= 1;
			}
		}
	}
	
	static int Task() {
		int ans = 0x3f3f3f3f;
		for (int i = 0; i < 1 << 5; i ++) {
			int res = 0;
			char[][] tmp = new char[10][10];
			for (int j = 0; j < 5; j ++) {
				for (int k = 0; k < 5; k ++) {
					tmp[j][k] = g[j][k];
				}
			}
			for (int j = 0; j < 5; j ++) {
				if ((i >> j & 1) == 1) {
					res ++;
					turn(0, j);
				}
			}
			for (int j = 0; j < 4; j ++) {
				for (int k = 0; k < 5; k ++) {
					if (g[j][k] == '0') {
						res ++;
						turn(j + 1, k);
					}
				}
			}
			boolean flag = true;
			for (int j = 0; j < 5; j ++) {
				if (g[4][j] == '0') {
					flag = false;
					break;
				}
			}
			if (flag) ans = Math.min(ans, res);
			for (int j = 0; j < 5; j ++) {
				for (int k = 0; k < 5; k ++) {
					g[j][k] = tmp[j][k];
				}
			}

		}
		if (ans > 6) ans = -1;
		return ans;
	}
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int T = in.nextInt();
		while (T -- > 0) {
			in.nextLine();
			for (int i = 0; i < 5; i ++) {
				g[i] = in.next().toCharArray();
			}
			System.out.println(Task());
		}
		
	}
	
}
【C++】递归与递推(详解) 递归是一种函数直接或间接调用自身的方法。在递归中,问题被分解为更小的子问题来解决,直到达到一个最简单的基本情况(Base Case),然后通过返回值逐步构建最终结果。递推是通过迭代或循环来解决问题的方法。通常是从基本情况开始,逐步计算出更复杂的情况,直到得到最终结果。递归和递推各有优劣,选择哪种方法需要根据具体问题、约束条件以及性能要求来决定。对于容易出现重复计算的情况(如斐波那契数列),递归的性能可能无法满足需求,而递推则会更高效。而对于自然适合分治或树状结构的问题,使用递归来实现逻辑可能更加直观清晰。 阅读详情

相关推荐

企业数字化转型的理论指南:构建未来企业的关键策略与实践路径

数字化转型已经成为当今企业发展和市场竞争的核心驱动力,而在这一过程中,企业架构(EA)发挥着至关重要的作用。这本白皮书《世界级企业架构:建立和发展EA能力的领导者方法》提供了深入的理论指导,为企业如何通过企业架构实现有效的数字化转型提供了清晰的路径。本篇文章将从,解读该书的核心内容,揭示企业在数字化转型过程中应该如何通过EA的构建和实施,驱动组织变革与技术创新。

AZone架构院的博客 3172

专题一:递推与递归

递归算法

m0_59519985的博客 567

【胡学长 带你学 Global Mapper 】如何将影像地图转换为国家2000坐标系

多部门联合开展工作坐标数据不匹配怎么办?Hi,我是胡学长!今天教大家如何利用Global Mapper将谷歌影像数据转换为国家2000坐标系影像数据 。

一起来交流学习吧 1万+

java递归

计算机科学中,递归是一种解决计算问题的方法(但他只是方法之一),其中解决方案取决于同一类问题的更小子集(方法自己调用方法自己,而方法里面调用别的方法,就不是解决同一类问题了)

风止的博客 3811

VirtualBox创建虚拟机(为安装Ubuntu桌面系统)

Ubuntu的安装非常灵活。但是万变不离其宗,归纳起来,无非就是以下3种:(1)用户可以下载完整的ISO镜像文件,将其转移到各种介质上面,例如DVD或者U盘,然后以该介质引导系统进行安装。(2)用户可以下载一个非常小的网络安装器,利用该安装器引导系统进行在线安装。(3)用户可以将Ubuntu安装到一个U盘中,随身携带。为了便于读者学习,本节将介绍通过完整的ISO镜像文件安装Ubuntu。其他的安装方式将在后面介绍。

夏天又到了的专栏 2687

【FnOS飞牛云 | NAS存储】旧电脑不吃灰,手把手教你搭建完全属于自己的私人网盘

打造属于自己的NAS私人网盘,亲测有效,值得一试

木子Linux的博客世界 9413

AcWing——递推与递归(Java)

AcWing中的蓝桥杯C++课,我将其中的笔记都记录下来,且将全部代码换成C++,方便各位学Java的同学们一起学习,在蓝桥杯中踊跃拿奖!!!

weixin_55902321的博客 270

b站视频链接快速获取

快速获取b站视频数据

qq_45889931的博客 7759

对递推和递归的理解

对递推和递归的理解 1.此问题能否用递推解决我们以斐波拉契数列问题为例进行阐述,斐波拉契数列为0、1、1、2、3、5、8、13、21、…表现斐波拉契数列为瘦柱状图的形式,如下 我们现在所要解决的问题是求取第n个位置的数值,下面我们正式开始考虑能否用递推解决这个问题(关于递推和递归的区别,将会在下文阐述): 我们考察3号位置,我们发现3号位置的值依赖于1号位置和2号位置,即在1号位置的值和2号位

一只不断成长的藏獒 5373

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

在ROS2中自动导航使用Nav2来实现。Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;Nav2 输出速度命令;Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等。

郭老二 5081

node: /lib64/libstdc++.so.6: version `CXXABI_1.3.11‘ not found (required by node) 解决方案

本文主要介绍了node: /lib64/libstdc++.so.6: version `CXXABI_1.3.11’ not found (required by node) ,希望能对使用nodejs的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

Java算法递归与递推

Java算法----递归与递推递推实现递推思想递归实现递归思想递归实现递推思想递推实现递归思想四种方法的特点 问题:给你一个整数n,如果n是奇数,就进行运算n=n*3+1,如果n是偶数,就进行运算n=n/2,直到n等于1为止,请计数一种进行了多少次运算(使用四种编码方式实现) 递推实现递推思想 /* 递推实现递推思想 */ public static Integer getSum1(Integer n) { if (n <= 0) return 0;/

weixin_44332957的博客 973

Vue - 萤石云监控 ezuikit 视频实例销毁方案,解决使用stop方法无法销毁EZUIKit实例或销毁后依然占用内存并且监控画面依然有声音问题(解决页面多个监控摄像头画面同时播放,翻页或关闭页

vue2,vue3,萤石,监控摄像头,萤石云销毁视频实例,退出页面销毁,stop销毁原视频流,占用内存怎么办,销毁后视频依旧在后台播放有声音,销毁视频播放器,页面上有多个视频画面怎么销毁某一个,stop方法不生效怎么办,浏览器非常卡,dom销毁,ezuikit-js萤石云播放器Vue中使用beforeDestory销毁播放器实例,调用萤石云ezuikit-js的视频对象销毁,vue使用萤石云监控视频录像回放,不销毁实例会出现离开页面后依旧有监控声音并且占内存问题,不好使,页面崩了,崩溃,视频监控太多,没有用

🏆 前端领域优质创作者 1万+

算法 | 递归与递推

递归与递推(上)

池央的博客 2855

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

算法——递归与递推[蓝桥杯]

文章目录递归与递推递归实现(指数型)枚举递归实现(排列型)枚举递归实现(组合型)枚举补充:DFS的优化—剪枝 递归与递推 递归就是自己调用自己。 printf和scanf的速度比cin和cout要快 如果输入输出的规模小于10的5次方,速度没有太大区别,如果大于10的5次方,最好是用printf和scanf(相差大概一倍) 参数有两个位置,全局参数和形参。 斐波那契数列 #include<iostream>//有cin和cout #include<cstring>//有mem

qq_51399192的博客 2169

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

递推与递归

一、概念 递推 递推算法是一种用若干步可重复运算来描述复杂问题的方法。递推是序列计算中的一种常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。——百度百科 其实简单来说,递推就是由最开始的已知状态逐步推向未知(即问题所需的答案)的过程叫做递推。 递归 程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需

cqbzcky的博客 714

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

递推与递归 (区别)

递推与递归 本文中部分内容转自他人博客,作者相关信息以及博客地址在文末。   概念 递归:从已知问题的结果出发,用迭代表达式逐步推算出问题的开始的条件,即顺推法的逆过程,称为递归。   递归的定义:在一个函数的定义中又直接或间接地调用本身。   递归思想: 把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解...

Move on 3万+

递推与递归笔记

问题背景:每对成虫过 x 个月产 y 对卵,每对卵要过两个月长成成虫;每个成虫不死,第一个月只有一对成虫,卵长成成虫后的第一个月不产卵(需过 x 个月产卵)。求过 z 个月后共有多少对成虫(输入示例:x=1, y=2, z=8,输出:37)。

Sarvartha的博客 725

递推和递归的关系与区别

1. 递推和递归 递推:数学上的概念,主要指递推式、递推数列或递推函数。一个数列的下一项由它前面几项的一种运算(或函数)构成,如 a[n]=a[n−1]+a[n−2]a[n]=a[n-1]+a[n-2]a[n]=a[n−1]+a[n−2]。 递归:计算机中的概念,主要指计算机上的递归函数,(计算机中的‘函数’不同于数学上的‘函数’,这里指一段代码),即指会调用自己的函数。 2. 关系 数学上...

zijikanwa 1万+

递推与递归算法

主要简单描述递推与递归

2503_92777494的博客 714

基础递归与递推总结

基础递归与递推总结 前记:还是很基础的专题啊,不过后面有刚开始学会很头疼的汉诺塔问题。emmm,算入门了吧。 文章目录基础递归与递推总结【递归与递推】猴子摘桃【递归与递推】移梵塔 【递归与递推】猴子摘桃 题目描述: 果园里种了很多桃树,当桃树开始结果的时候,猴子便会成群结队地前来摘桃。猴子们第一天会摘掉桃子的一半还多一个,第二天再摘第一天剩下的一半还多一个,以后每天均摘掉上一天剩下的一半还多一个,...

soul_mingling的博客 2203
上一篇: 蓝桥杯 九宫重排
下一篇: 二分与前缀和
剑气扬名
博客等级 码龄7年 24粉丝 79原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值