JAVA_SE基础——18.方法的递归

方法的递归是指在一个方法的内部调用自身的过程,递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用,接下来用一个最简单的例子来体现下方法递归,使用递归算法计算自然数之和:

public class Example18 {
<span style="white-space:pre">	</span>public static void main(String[] args) {
<span style="white-space:pre">		</span>int sum = getSum(4);                    // 调用递归方法,获得1~4的和
<span style="white-space:pre">		</span>System.out.println("sum = " + sum); // 打印结果
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>// 下面的方法使用递归实现 求1~n的和
<span style="white-space:pre">	</span>public static int getSum(int n) {
<span style="white-space:pre">		</span>if (n == 1) {
<span style="white-space:pre">			</span>// 满足条件,递归结束
<span style="white-space:pre">			</span>return 1;
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>return n+getSum(n - 1);
<span style="white-space:pre">	</span>}

}

结果是:sum = 10

本人初学者,我用口述下上面代码的解释,如有误请提出, 我直接从求和的方法解释吧

if (n == 1)   这是条件  如果n等于1 就返回1

<pre name="code" class="java">return n+getSum(n - 1);

第一次递归 4+(4-1) 第二次递归4+(3-1)  第二次递归4+(2-1)  第四次满足条件 直接返回1    那个n=4 一直没有改变过   接着加上 1+2+3+4=10

再讲一个阶乘的例子,代码如下:

public class Example018 {      
<span style="white-space:pre">	</span>static int multiply(int n){      
<span style="white-space:pre">	</span>if(n==1) {     
<span style="white-space:pre">	</span>return n;      
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>return n*multiply(n-1);      
}      
   
<span style="white-space:pre">	</span>public static void main(String[] args){      
<span style="white-space:pre">	</span>System.out.println(multiply(3));      
}      
}    

这代码的需求是1~3相乘

if(n==1)

if如果等于1 就返回1

return n*multiply(n-1);

n=3   3*(3-2)*(2-1)*1

看完还不懂的留言或加我企鹅吧  654249738

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 22:18:45

JAVA_SE基础——18.方法的递归的相关文章

JAVA_SE基础——17.方法的重载

方法重载: 方法重载就是方法名称重复,加载参数不同. 具体规范: 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体. 1.如果参数个数不同,就不管它的参数类型了! 2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同. 三.方法的返回类型.修饰符可以相同,也可不同. 重载的例子如下 用代码实现对两个整数相加,对三个整数相加以及两个小数相加的功能. public class Example17 { public static void main(S

JAVA_SE基础——16.方法

接触过C语言的同学,这小章节很容易接受.Java中的方法是类似与C语言中的函数  功能和调用方法都类似  只不过叫法不一样  因为java是面向对象  c是面向过程    仅仅是叫法不同.. . 看到15章节的同学,应该都会话矩形吧,现在先看一下在不使用方法时如何实现打印三个长宽不同的矩形,代码如下: public class Rectangle01 { public static void main(String[] args) { // 下面的循环是使用*打印一个宽为5.高为3的矩形 for

C#基础—匿名方法(Anonymous Mehod)

1.引入匿名方法 早在C# 2.0中就提出了匿名方法,实现了以一种内联的方式声明委托,在此之前,声明委托唯一的方法是"命名方法",虽然 C# 3.0 里有了lambda ,使得写内联代码更加简洁和方法,但是匿名方法依然有他的用处,匿名方法提供了可以忽略参数列表的能力. 2.匿名方法的使用和注意点 什么匿名方法?简单的理解就是没有定义名字的方法(其实编译器还是帮我们生成了一个方法).代码的实现就是把方法的定义和方法的实现内联到了一起. 先看个演示例子: 1 class Program 2

OC基础(18)

Category基本概念 Category注意事项 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: p

附录A培训实习生-面向对象基础(3):方法重载

就上一篇代码而言,你如果写Cat cat = new Cat();会直接报错错误 : 1       “Cat”方法没有采用“0”个参数的重载 E:\大话设计模式学习\BigDesignPatterns\附录A培训实习生之面向对象基础\动物运动会\AnimalGames\Form1.cs       20     23     AnimalGames 原因就是必要给小猫起名字.如果当真需要不起名字也要生出小猫来,可以采用方法重载. 方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参

JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方法之内. 作用上的区别: 1. 成员变量的作用是用于描述一类事物的公共 属性的. 2. 局部变量的作用就是提供一个变量给方法内部使用而已. 生命周期区别: 1. 随着对象 的创建而存在,随着对象的消失而消失. 2. 局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,局部变量一旦出了自己的作

[.net 面向对象编程基础] (18) 泛型

[.net 面向对象编程基础] (18) 泛型 上一节我们说到了两种数据类型数组和集合,数组是指包含同一类型的多个元素,集合是指.net中提供数据存储和检索的专用类. 数组使用前需要先指定大小,并且检索不方便.集合检索和声明方便,但是存在类型安全问题,本来使一个类型安全的C#变得不安全了. 集合为了解决数组预设大小的问题,采取了一种自动扩容的办法,这样当大小不够时,他就创建一个新的存储区域,把原有集合的元素复制过来.如此又对性能上也是有很大的影响. 上节我们说到解决这些缺陷的方法,那就是.NET

蓝鸥Unity开发基础二——课时12 递归

一.递归 递归-在方法体内,再次调用方法本身 递归必须有出口 using System; namespace lesson_12{    public class Math{ //递归就是在方法内部调用方法本身        //1.递归必须有结束条件        //2.将大的复杂的问题分解为与原问题类似的小问题来问题,并且小问题和原问题是同一件事并且更简单 //递归本身是一种算法    public  int F(int n){            //结束条件            i

1.28 Java基础总结 ①方法重载②构造方法

1.28 Java基础总结 ①方法重载②构造方法 一.方法的重载在同一个类中,方法名相同,形参列表不同访问修饰符.返回类型和是否重载无关:按顺序对应的形参列表类型不同即可 二.构造器在类创建一个实例时被调用,构造方法只能用new关键字调用目的:初始化实例,初始化类属性(0,0.0,null,false)无返回值,和类名一致,用来构造对象作用:为对象分配内存, 创建并初始化成员变量(通过类创建,所以可以在static方法中调用构造方法) 返回引用,引用.属性:引用.方法(所以无返回值) 三.构造方