Java递归计算1-100之间的的和 分析方法体的在栈内存中的压栈(入栈)和弹栈

利用递归打印1——100 递归。打印输出 阅读详情

使用递归计算1-n之间的和

定义一个方法,使用递归计算1-n之间的和

已知:

最大值:n

最小值:1

计算:

1+2+3+...+(n-1)+n=?????

使用递归的明确条件

1、递归的结束条件

             获取到1的时候结束

2、递归的目的

            获取下一个被加的数字(n-1)

使用递归计算1-100的累加值代码:

package com.baidu;

public class SumDecursion {
    public static void main(String[] args) {
        System.out.println(sum(100));
    }
    public static int sum(int n){
        //获取到1的时候结束
        if (n==1){
            return 1;
        }

        //获取下一个被加的数字(n-1)
        int sum1 = n+sum(n-1);
        return sum1;

    }
}

递归计算数字累加的原理:

没有创建对象,没有new就没有堆内存

1、程序首先执行main方法,我们一直都在说main方法是程序的入口,此时main方法压栈执行,从栈顶进入栈底

2、main方法里调用了sum方法,sum方法此刻会压栈执行

3、sum方法里有if判断语句,100肯定不等于1,这个时候if语句不执行,只返回 100+sum(100-1)

4、在return语句执行的时候,又遇到一个sum方法此时参数为99(100-1),返回99+sum(99-1)

5、。。。。。。

6、在sum方法传参数为1的时候,此时if语句成立,程序走if语句,不走if语句外的return了,跳出了递归

 

弹栈

一旦main方法结束了,栈中所有的方法都会弹出

写完递归后发现为啥要写递归呢?

for循环就可以完成1-100的累加求和

注意:

使用递归求和,main方法调用sum方法,sum方法会一直调用sum方法,导致内存中有多个sum方法(频繁的创建方法、调用方法、销毁方法),效率低下

如果仅仅是计算1-n之间的和,不推荐使用递归,使用 for循环即可

 

 

Java递归求和示例:从1加到100 递归算法是计算机科学中一种常见的算法设计方法,其核心思想是函数自我调用。它将一个大问题分解为若干个小问题,直到问题简化为可以直接解决的最基本情况,然后通过回溯的方式依次求解各个子问题。在数学和计算机科学中,递归是解决很多复杂数学问题的关键。递归算法可以分为两类:直接递归:函数直接调用自身来解决问题。间接递归:函数通过调用另一个函数来间接调用自身。在实际应用中,直接递归用得更频繁,也更容易理解。但间接递归在某些复杂问题中提供了更灵活的解决问题的方式。 阅读详情

相关推荐

CMOS锁相环核心:四种鉴频鉴相器(PFD)结构深度剖析与选型指南

本文深入剖析了CMOS锁相环中四种鉴频鉴相器(PFD)的结构与性能,包括传统RS触发器型、非时钟型、预充电型和边沿触发型PFD。通过详细的电路分析、实测数据和工程案例,提供了PFD选型的实用指南,帮助工程师根据速度、功耗和精度需求选择最优方案,提升锁相环设计效率。

weixin_42530458的博客 587

使用递归函数计算1到n之和

这是一道比较简单的递归代码题,主要帮助同学们了解并熟悉递归思想。其余递归为n>1时,返回n+f(n-1)特殊情况当n<=0时,根据题目要求返回0。首先递归题需要明确递归结束条件。本题条件为n=1时返回1。

weixin_58290379的博客 819

【GNSS/Linux】BKG Ntrip Client (BNC) 的编译与安装

【GNSS/Linux】BKG Ntrip Client (BNC) 的编译与安装 1. BNC软件 1.1 软件介绍 The BKG Ntrip Client (BNC) is an Open Source multi-stream client program designed for a variety of real-time GNSS applications. It was primarily designed for receiving data streams from any Ntrip

小马甲的新马甲 7801

递归求式子和:用递归的方法对下列计算式子编写一个函数,并写出相应主函数。 f(x,n)=x-x2+x3-x4+……+(-1)(n-1)xn (n>0)

#include<stdio.h> double f(double x,int n); double js1(double z,int b); int main() { double x; int n; scanf("%lf%d",&x,&n); printf("%.2lf",f(x,n)); } double f(double x,int n) { double sum; double b; if(n= =0) return 0; int z; if(n%2==0) z=-

weixin_51406688的博客 3579

从零到一:手把手教你构建自定义ReaxFF力场参数

本文手把手教你从零构建自定义ReaxFF力场参数,详解反应力场的动态键序机制与参数化逻辑。通过LAMMPS实战演示,涵盖训练数据准备、参数优化算法选择及性能优化技巧,助力研究人员精准模拟化学反应过程。适用于材料科学、催化研究等领域,特别适合已掌握分子动力学基础的进阶用户提升力场开发能力。

weixin_28365523的博客 1056

薅“刷宝”羊毛的autojs脚本教程,简单粗暴好用!!!

本教程旨在帮助大家实现用手机或闲置手机来进行“刷宝”平台的收益,能薅多少米就看你的本事了,作者教你的是如何用autojs来进行脚本的挂机教程,掌握了这个思路后,你可以根据自己的实际需要来改进脚本或者撸别的平台:) 适用系统,**android4.0以上,苹果机暂不适用**(大多数android系统手机都是7.0以上,要查看自己手机是android几,见文件夹“视频教程-基础”>1.查看android版本的方法)

rousseaou8的博客 8万+

递归算法及其常见的运用

关于递归,百度百科是这样说的:程序调用自身的编程技巧称为递归(recursion)。简单来说就是,方法:“我调用我自己”。其实递归和循环很像,都是重复地去做某件事,循环可以写成递归,但递归不一定能写成循环,因为终止递归的条件需要找到,是一个充分不必要条件。 递归的条件 1.递归的终止条件(也就是什么时候达到某一个条件可以结束了); 2.得到递归的表达式。 下面举几个例子。 使用递归做求和运算 有一个经典题目,1+2+3+...+100的和是多少,记得小学的时候学到高斯用了巧妙地方法惊呆了他的数学老师,我还感

weixin_43785325的博客 734

成功解决AttributeError: ‘ImageDraw‘ object has no attribute ‘textsize‘

​ 成功解决AttributeError: 'ImageDraw' object has no attribute 'textsize' 目录 解决问题 解决思路 解决方法 解决问题 AttributeError: 'ImageDraw' object has no attribute 'textsize' 解决思路 属性错误:'ImageDraw'对象没有属性'textsize' 解决方法 最新的Pillow 10.0.0 版本已经删除了这个函数,导致两个库(Pillow 、wordc

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 4775

用递归的方法输出1到100

想写一个使用递归的方法输出1到100,但是几次试验都没成功。 下面一段求1到100的和的成功了,输出结果为5050 int func(int num) { int sum; if (num > 1) sum = num + func(num-1); else sum = 0; return sum; }

JAVA领域优质创作者,基于分片网络查询方法专利发明者。 8700

2025最新!视频动作识别算法的前沿研究与论文解读

2025最新!视频动作识别算法的前沿研究与论文解读 ,人工智能,计算机视觉,大模型,AI,本文聚焦2025年视频动作识别算法前沿,先介绍其定义、意义及核心挑战,再阐述传统与深度学习方法。还解读了基于Transformer、轻量化、跨模态融合和半监督学习的前沿研究,解释关键概念,列举常用数据集、评价指标,分析当前问题与未来趋势,为该领域研究提供全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

Android 人像分割实战:OpenCV+YOLOv8+NCNN 三库联动(附 GPU 加速 / 内存优化全方案)

本文详细介绍了在Android项目中集成OpenCV+YOLOv8+NCNN实现实时人像分割的技术方案。主要内容包括:项目环境搭建(配置NDK、添加Native模块)、核心库文件集成(OpenCV、NCNN、YOLOv8模型)、JNI接口设计与实现(Kotlin层调用C++算法)。通过Camera API获取图像数据,使用YOLOv8进行人体检测,结合NCNN高性能推理框架实现人像分割处理,最终将原始画面与分割结果(背景透明)同时显示在Android界面上。该项目采用多技术栈协同工作,OpenCV负责图像处

FJN110的博客 233

Java虚拟线程栈内存配置实战(从默认值到生产级调优)

掌握虚拟线程的栈大小配置方法,解决高并发场景下内存占用过高的问题。本文详解Java虚拟线程默认栈设置、参数调优技巧及生产环境适配策略,提升系统吞吐量与资源利用率,值得收藏。

SimProceed的博客 773

从 OPEN CURSOR 到 SELECT INTO TABLE:把 ABAP 数据读取的底层机制与性能差异讲透

ABAP数据库访问性能优化关键点 摘要:ABAP程序性能的核心在于数据读取方式的选择。本文分析了三种常见数据库访问方式的技术原理:显式游标(CURSOR)、SELECT-ENDSELECT循环和SELECT INTO TABLE。重点揭示了数据从数据库到应用服务器的传输机制,包括OPEN/REOPEN与FETCH操作、Array Fetch批量传输原理以及SAP游标缓存机制。通过VBAK表的性能测试数据对比,证明了不同场景下最优访问方式的选择依据:大数据量时显式游标性能优势明显,而SELECT INTO T

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 170

数据结构——栈与堆的区别

栈(stack)及堆(heap)概念的最初了解起始于对C语言的基础学习。而对于他们的理解也只是浅尝辄止,停留在:栈内存由系统自动分配,函数调用时对其局部变量分配内存,调用结束则进行回收;堆内存由用户手动分配,需进行内存释放操作——即初步了解了free和malloc,calloc等;而在进行数据结构方面知识学习后,也进一步的对二者有了更深的理解应当说,对二者的初步理解总体上正确。在编程里,堆内存与栈内存属于内存管理的概念,二者在用途、分配方式、性能等方面,都存在显著差异。

jiajixi的博客 2007

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JAVA基础总结(十二) JAVA 递归详解

JAVA 递归详解

shiyu_951的博客 3055

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

什么是递归调用-自已调自己 什么是递归算法

/* * 递归:方法自已调用自己 * 递归的分类:2种 * 1.直接递归称为方法自身调用自己 * 2.间接递归可以使用A方法调用B方法,B方法调用C方法,C方法再调用A方法 * 注意事项: * 1.递归一定要有条件限定,保证能停止下来,否则会发生栈内存溢出 * 2.在递归虽然有限定条件,但是递归次数不...

曾昭武 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java递归详解与应用

文章目录一、概念1、定义2、分类3、注意事项二、递归的练习1、练习:使用递归计算1-100的累加和2、练习:使用递归计算10的阶乘3、练习:使用递归列出windows目录下的所有文件夹及所有文件三、递归的应用1、快速排序 一、概念 1、定义 所谓递归就是自己调用自己。 2、分类 递归分为两种: 直接递归:方法自身调用自己。 间接递归:A方法调用B方法,B方法调用C方法,C方法再调用A方法。 3、注意事项 递归一定要有条件限定,保证递归能够停止下来,否则会形成死循环并发生栈内存溢出(StackOverf

我的博客 1万+

【零基础学Java】—递归(五十一)

【零基础学Java】—递归(五十一) 一、递归 递归:指在当前方法内调用自己的这种现象 🔵递归的分类: 直接递归:方法自身调用自己 间接递归:间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法 🔵🔵注意事项: 递归一定要有条件限制,保证递归能够停止下来,否则会发生栈内存溢出 在递归中能够虽然有限定条件,但是递归的次数不能太多,否则也会发生栈内存溢出 构造方法 禁止递归 🔵🔵🔵递归的使用前提:当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归 二、练习 /* 定义

道阻且长,行则将至。 558

Java基础IO流之递归的使用

☆引言☆ 大家好,我是痛而不言笑而不语的浅伤。上一章我们学习了IO流中的File类,本章我们一起来学习IO流中的递归。这篇文章来自我的《吃透JavaSE基础》专栏中,想要学习更多JavaSE基础,订阅专栏《吃透JavaSE基础》。对文章中描述错误的希望大家积极指出。 我想要个关注 🎉博客首页:痛而不言笑而不语的浅伤 🥳欢迎关注👍点赞收藏🎊留言 ❤:热爱Java学习,期待一起交流! 🙏🏻作者水平很有限,如果发现错误,求告知,多谢! 🥰有问题可以私信交流!!! 目录 ...

weixin_65657777的博客 1025

java递归讲解及使用

方法递归调用 递归是一种编写代码上的技巧,方法自身调用,自己调用自己 适合:方法的主题功能不变,但是功能在执行的时候,参数会改变 方法递归的注意事项: 方法运行,自己调用自己,会频繁进入栈内存 。内存溢出:方法进入栈内存,内存以满 。使用递归:一定要有方法的出口,递归不能太深入 方法递归,计算1+2+3+…+100 。方法的功能不变,求和,每次求和数据是变化的 public static void main(String[] args) { getSum(100); } /* *递归计算1+2+3+.

x871752024的博客 191

4.方法和递归

文章目录1. 死循环2. 方法2.1 栈内存2.2 方法的重载2.3 递归today code 1. 死循环 for死循环 for (;;){ 循环体; } while死循环(推荐,容易理解) while (true){ 循环体; } 相较于while死循环,for死循环的性能更好,但while死循环更容易理解。 2. 方法 方法的调用: 对象名.方法名 类名.方法名 特殊调用方式:调用同一个类中的方法 方法名 方法的小结: 方法的位置:类中方法外,方法之间不能嵌套;

ZYN的博客 132

Java基础——递归

指在当前方法内调用自己的这种现象。

qq_46080582的博客 1470

Java递归

递归是指一个方法或函数在执行过程中调用自身的过程。

南州博客 96

Java——面向对象 2023/5/17

递归一定要向“已知方向“递归,否则这种递归就变成了无穷递归,停不下来,类似于“死循环”。实参:在调用方法时,方法名后面括号()中的使用的值/变量/表达式称为实际参数,简称实参。形参,在定义方法时,方法名后面括号()中声明的变量称为形式参数,简称形参。>如果是引用数据类型的变量,则将此变量保存的地址值传递出去。>如果形参是基本数据类型的变量,则将实参保存的数据值赋给形参。>如果形参是引用数据类型的变量,则将实参保存的地址值赋给形参。>如果是基本数据类型的变量,则将此变量保存的数据值传递出去。

weixin_64815719的博客 141

Java 递归的概述和使用(递归累和、递归求阶乘、递归文件搜索)

一、概述 生活中来说: 父辈种地-- 挣钱 -- 供养孩子 -- 孩子长大 -- 孩子种地 -- 孩子挣钱 -- 供养孩子 -- 孙子长大 -- 孙子种地 程序中来说: 是指在当前方法中调用自己 的这种现象 注意事项: 1.递归一定要有出口,否则会报 栈内存溢出 异常 2.递归出口完了,还是会报 代...

m0_60489526的博客 397

从递归陷阱到优雅解耦:StackOverflowError背后的设计哲学

本文深入探讨了Java中java.lang.StackOverflowError的成因与解决方案,揭示了递归编程的潜在风险。通过对比递归与迭代的内存消耗、性能差异,提供了树形结构遍历、状态机实现等场景的重构策略,并介绍了备忘录模式优化深度优先搜索的方法,帮助开发者编写更健壮的代码。

dapp9builder的博客 167
上一篇: Hadoop中HDFS基本命令、管理命令
下一篇: Java中递归求阶乘代码实现
崔凯洋
博客等级 码龄6年 26粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值