首页 > 编程语言 >【算法】递归

【算法】递归

时间:2024-04-04 09:33:17浏览次数:29  
标签:return 递归 int jump 算法 static public

递归的本质是方法不断调用本身。

我们知道for循环、while循环都是在代码块内部实现的,而在递归循环中,循环的是一个方法,即让方法不断自我循环。

但是不断循环会不断入栈,导致栈溢出。

为了解决这个问题,我们首先了解如何实现一个栈。

1、明确该递归的参数和返回值。

2、确定递归条件。

3、确定单层递归逻辑。

参数:算法中用到了哪些变量,哪些变量就是参数。

返回值:涉及加减乘除用int,其他一般用void。

例题一:斐波那契数列

package com.test;

public class Test {
	public static void main(String[] args) {
		int num = digui(9);
		System.out.println(num);
	}
	public static int digui(int n) {
		if (n == 1) {
			return 1;
		} else if (n == 2) {
			return 1;
		} else {
			return digui(n-1) + digui(n-2);
		}
	}
}

例题二:青蛙上台阶

package com.test;

public class Test {
	public static  void main(String[] args) {
		int num = jump(9);
		System.out.println(num);
	}
	public static int jump(int n) {
		if (n == 1) {
			return 1;
		}else if(n == 2) {
			return 2;
		}else {
			return jump(n-1) + jump(n-2);
		}
	}
}

标签:return,递归,int,jump,算法,static,public
From: https://blog.csdn.net/2302_78914800/article/details/137273476

相关文章

  • 【算法】堆排序
    完全二叉树在学习堆排序之前,我们先对完全二叉树有一个基本的了解。构建过程:数据从上到下,从左到右依次进行构建。我们给出以下数据 我们构建出以下完全二叉树我们观察每个节点的下标,会发现以下规律。 N[i]的左子树:N[2i+1] N[i]的右子树:N[2i+2] N[i]的父节点:N......
  • 面试了微软 bing 应用组大模型算法岗,被自己菜哭了。。。
    节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。合集在这里:《大模型面试宝典》(2024版)正式发......
  • Python常用算法思想--总概篇
    算法的起源:欧几里德的《几何原本》中阐述的求两个数的最大公约数的过程。算法的定义:解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表用系统的方法描述解决问题的策略机制。算法的本质:算法是程序的灵魂,也是衡量一位程序员水平高低的最好参照物。算法的表示方......
  • 神经网络算法:一文搞懂 Self-Attention 和 Multi-Head Attention
    随着Transformer模型的迅速普及,Self-Attention(自注意力机制)和Multi-HeadAttention(多头注意力机制)成为了自然语言处理(NLP)领域中的核心组件。本文将从简要介绍、工作流程、两者对比三个方面,为您解析这两种注意力机制。前期分享一文搞懂Transformer一文搞懂Attent......
  • 神经网络算法:一文搞懂BERT(基于Transformer的双向编码器)
    本文将从BERT的本质、BERT的原理、BERT的应用三个方面,带您一文搞懂BidirectionalEncoderRepresentationsfromTransformers|BERT。GoogleBERT一、BERT的本质BERT架构:一种基于多层Transformer编码器的预训练语言模型,通过结合Tokenization、多种Embeddings和特定任......
  • 二叉树的高效非递归层次遍历:一种O(n)时间复杂度与固定空间复杂度的解决方案
    @TOC在计算机科学中,二叉树是一种非常重要的数据结构,它在算法设计和问题解决中扮演着关键角色。本文将探讨如何使用非递归方法遍历一个给定的二叉树,并在不修改树结构的前提下,输出每个节点的关键字。这个过程将在O(n)的时间复杂度内完成,并且只使用固定量的额外存储空间。1.......
  • 数据结构与算法
    1.1数据结构的研究内容程序=数据结构+算法  ———程序的本质 例1:图书管理系统操作对象:若干行数据记录操作算法:查询、插入、删除、修改等操作对象之间的关系:线性关系数据结构:线性数据结构、线性表例2:文件系统的结构图如图可以看到,这是一个典型的树型结构问题,数据......
  • 稀碎从零算法笔记Day37-LeetCode:所有可能的真二叉树
    今天的每日一题,感觉理解的还不够深,有待加深理解题型:树、分治、递归链接:894.所有可能的真二叉树-力扣(LeetCode)来源:LeetCode题目描述给你一个整数 n ,请你找出所有可能含 n 个节点的 真二叉树 ,并以列表形式返回。答案中每棵树的每个节点都必须符合 Node.val==0 ......
  • 稀碎从零算法笔记Day36-LeetCode:H指数
    有点绕的一个题,题目描述的有点奇怪(可以看下英文?)题型:数组、模拟链接:274.H指数-力扣(LeetCode)来源:LeetCode题目描述给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h指数......
  • 编写一个算法来计算 n 阶乘中尾随零的数量
    算法:编写一个算法来计算n阶乘中尾随零的数量解题思路:当n过大时,从1遍历至n,那么会超时,发现以下规律:n!=1*2*3*4*(1*5)*...*(2*5)*...*(3*5)...每隔5个数就会出现一个5,因此我们只需要通过n/5来计算存在存在多少个5个数,那么就对应的存在多少个......