2024 蓝桥打卡Day31

递归与辗转相除法

  • 递归(Recursion)
  • 辗转相除法(Euclidean Algorithm)
  • 总结

在这里插入图片描述

递归(Recursion)

递归是指一个函数在执行过程中调用自身的过程。在编程中,递归函数在遇到满足某个条件时会停止调用自身,从而结束递归。递归经常用于解决可分解为相似但规模较小的子问题的问题。在递归的每一层,问题都会变得更小,直到达到基本情况(终止条件),然后逐层返回结果。

递归的经典示例是计算阶乘。阶乘表示从1到给定的数字的乘积。例如,5的阶乘是1 * 2 * 3 * 4 * 5 = 120。这可以通过递归函数来计算:

public static int factorial(int n) {if (n == 0) {return 1; // 基本情况:0的阶乘为1} else {return n * factorial(n - 1); // 递归调用:n的阶乘为n乘以(n-1)的阶乘}
}

递归函数必须具有终止条件,否则它将永远递归下去,导致栈溢出。

辗转相除法(Euclidean Algorithm)

辗转相除法,也称为欧几里德算法,是一种用于计算两个整数的最大公约数(GCD)的算法。最大公约数是能够整除两个数的最大正整数。

辗转相除法的基本思想是:假设a和b是两个整数,其中a > b。我们用a除以b,得到商q和余数r,即a = bq + r。那么a和b的最大公约数等于b和r的最大公约数。

下面是辗转相除法的基本算法:

如果b等于0,则a就是最大公约数。
否则,我们将a赋值给b,将r赋值给a,然后重复步骤1,直到b等于0为止。
下面是一个用Java实现的简单例子:

public static int findGCD(int a, int b) {if (b == 0) {return a; // 基本情况:b等于0,a就是最大公约数} else {return findGCD(b, a % b); // 递归调用:继续求b和a除以b的余数的最大公约数}
}

这个方法会一直递归调用直到b等于0,这时a就是最大公约数。

总结

递归是一种函数调用自身的编程技术,用于解决问题,其中问题被分解为规模较小的子问题。
辗转相除法是一种用于计算两个整数的最大公约数的数学算法,它基于整数除法和取余运算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589667.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖Day04套餐管理部分总结

写给像我一样完完全全的小白的。本人代码水平一塌糊涂,前几天就是机械地跟着视频敲代码。对于Day04的作业本来感觉代码抓瞎一点不会写,尽力去理解业务逻辑后发现好像也没那么难,整体代码可以仿照Day03新增菜品来进行实现! 一、功…

关于简单又挣钱的冷门美团项目,美团圈圈

大家好,最近美团又开始搞事情了。接连推出了好几个网推项目,让一大波人都吃上了肉了。 美团的项目很简单,就是给它们的活动做推广。用户只需要拿到它推广的链接,然后去扫码进群就可以了。只要用户保持8天不退就行了。 下面是体验…

2024 ccfcsp认证打卡 2022 09 01 如此编码

2022 09 01 如此编码 题解1题解2 题解1 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 天数int m sc.nextInt(); // 科目数int[] b new int[n 1]; // 存放结果的数…

剖析Linux内核的内存管理

大家好,今天给大家介绍剖析Linux内核的内存管理,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 Linux内核的内存管理是一个复杂且关键的部分,它负责确保系…

MyBatis的基本应用

源码地址 01.MyBatis环境搭建 添加MyBatis的坐标 <!--mybatis坐标--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!--mysql驱动坐…

百卓Smart管理平台 importexport.php SQL注入漏洞复现(CVE-2024-27718)

0x01 产品简介 百卓Smart管理平台是北京百卓网络技术有限公司(以下简称百卓网络)的一款安全网关产品,是一家致力于构建下一代安全互联网的高科技企业。 0x02 漏洞概述 百卓Smart管理平台 importexport.php 接口处存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数据…

Transformer的代码实现 day04(FFN)

前馈神经网络&#xff08;FFN&#xff09; 几个线性层、激活函数、归一化层的叠加 注意&#xff1a;归一化是在保持数据分布的前提下&#xff0c;将数据缩放到特定范围&#xff0c;方便运算。注意&#xff1a;标准化是让不同特征的数据保持相似的尺度&#xff0c;但是会改变数…

【CANN训练营笔记】Atlas 200I DK A2体验手写数字识别模型训练推理

环境介绍 开发板&#xff1a;Huawei Atals 200I DK A2 内存&#xff1a;4G NPU&#xff1a;Ascend 310B4 CANN&#xff1a;7.0 准备环境 下载编译好的torch_npu wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/torch_npu-2.1.0rc1-cp39-cp39-linux_aarch…

python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下python基础中的关于模块的导入&#xff1a; 1&#xff0c;模块的介绍 2&#xff0c;模块的导入方式 3&#xff0c;自定义模块 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基…

Transformer的代码实现 day03(Positional Encoding)

Positional Encoding的理论部分 注意力机制是不含有位置信息&#xff0c;这也就表明&#xff1a;“我爱你”&#xff0c;“你爱我”这两者没有区别&#xff0c;而在现实世界中&#xff0c;这两者有区别。所以位置编码是在进行注意力计算之前&#xff0c;给输入加上一个位置信息…

Leetcode 234. 回文链表

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;he…

Maven依赖管理项目构建工具

一、Maven简介 1、为什么学习Maven 1.1、Maven是一个依赖管理工具 ①jar 包的规模 随着我们使用越来越多的框架&#xff0c;或者框架封装程度越来越高&#xff0c;项目中使用的jar包也越来越多。项目中&#xff0c;一个模块里面用到上百个jar包是非常正常的。 比如下面的例…