Java方法递归的简单例题
目录
递归
1.递归求N 的阶乘和递归求1+2+3+4······+n
2.按顺序打印一个数字的每一位
3.斐波那契数列和青蛙跳台阶问题
4.汉诺塔问题
递归
递归,简单来说,就是方法自己调用自己的过程,那要怎么样去实现递归呢?
首先,我们需要去根据条件,推导出一个递推公式,同时还需要有一个趋近于终止的条件,不能让他无限的调用自己,下面我们通过一些简单的例子来更加的了解递归。
1.递归求N 的阶乘和递归求1+2+3+4······+n
实现代码:
// 递归求n!public static int fac(int n) {if (n == 1){return 1;} else {return n * fac(n-1);}}// 实现代码: 递归求 1 + 2 + 3 + ... + 10public static int sum(int n) {if (n == 1){return 1;} else {return n + sum(n - 1);}}
这两题类似也挺好理解的
2.按顺序打印一个数字的每一位
实现代码:
public static void print(int n) {if (n <= 9){System.out.print(n + " ");} else {print(n / 10);System.out.print(n % 10 + " ");}}
这题举个例子 就拿1092,题目要求的意思是最后要得到 1 0 9 2这四个数字
而怎么去获得者四个数字呢?就需要我们 不断地拿n去/10 和%10 ,就可以打印这个数的每一位
下面对这道题进行扩展
写一个递归方法,输入一个非负整数,返回组成它的数字之和.
实现代码:
public static int sumPrint(int n){if (n <= 9){return n;} else {return sumPrint(n / 10) + n % 10;}}
3.斐波那契数列和青蛙跳台阶问题
青蛙跳台阶 :青蛙每次可以跳一层或者两层,求跳到第n层有多少种方法
通过找规律发现,青蛙跳台阶和斐波那契数列一样,当n == 1 或者n == 2的时候,得到的值为1 当n >=3 的 时候每个数等于前两个数的和
实现代码
public static int fb(int n) {if (n == 1 || n == 2) {return 1;} else {return fb(n - 2) + fb(n - 1);}}
4.汉诺塔问题
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
当n == 1 的时候 我们只需要将A上的盘子移到C即可
当n == 2 的时候需要将第一个放到B上,再把第二个放到C上,最后将B上的放到C上即可 完全移到C上共需要三步
通过如图对应的移动我们发现需要
移动方式 A-->C A-->B C-->B A-->C B-->A B-->C A-->C
我们发现 移动的次数是2的n次方- 1,同时当n>1的时候,我们每次需要把前n-1个盘子通过C中转移到B上,在将最下面的移到c上后,将B上的通过A中转移到C上,那么我们就有了如下的代码
// 显示移动路径public static void move(char pos1, char pos2) {System.out.print( pos1 + "-->" + pos2 + " ");}/**** @param n 移动多少盘子* @param pos1 起始位置* @param pos2 中转位置* @param pos3 结束位置*/public static void han(int n , char pos1, char pos2, char pos3){if (n == 1) {move(pos1,pos3);} else {//先把前 n - 1个盘子移到b上 利用chan(n - 1, pos1, pos3, pos2);move(pos1,pos3);//把b的盘子移到c上面han(n - 1, pos2, pos1, pos3);}}
Java方法递归的简单例题相关推荐
- java方法重载和简单计算器
Java方法 **方法重载:**一个类中,有相同的函数名称,但形参不同的函数 重载规则: 方法名称必须相同 参数列表必须不同(个数不同,类型不同,参数排列顺序不同等) 返回类型可以相同可以不同 pub ...
- java方法练习之简单计算器
关于导包的描述正确的是 C A. 一个源文件中只能有一条导包语句 B. 导包语句必须写在源文件的第一行有效语句 C. 导包语句的关键字为 import D. 位于java.util 包中的类无需导包, ...
- Java方法---定义,重载,传参,递归
Java方法定义 Java方法是语句的集合,这些语句一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或者对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则:方法的本意是功 ...
- java SE(十一)——File、方法递归、IO流
File.方法递归.IO流 File(定位.操作文件) 前言 File类概述 File类的常用API 判断文件类型.获取文件信息 创建文件.删除文件功能 遍历文件夹 方法递归 递归的形式和特点 递归的 ...
- xsl调用java方法传参_Java中的XSL转换:一种简单的方法
xsl调用java方法传参 XSL转换 (XSLT)是将一个XML文档转换为另一个XML文档的强大机制. 但是,在Java中,XML操作相当冗长和复杂. 即使是简单的XSL转换,也必须编写几十行代码- ...
- 简单的java方法_Java简单实用方法一
整理以前的笔记,在学习Java时候,经常会用到一些方法.虽然简单但是经常使用.因此做成笔记,方便以后查阅 这篇博文先说明构造和使用这些方法. 1,判断String类型数据是否为空 String类型的数 ...
- JAVA入门级教学之(方法递归)
目录 JAVA入门级教学之(方法递归) 1.关于方法的递归调用: 2.递归是很耗费栈内存的,递归算法可以不用的时候尽量别用 3.以下程序运行的时候发生了这样的一个错误[不是异常,是错误] 4.递归必须 ...
- java 方法重载调用_Java方法的定义以及调用、方法重载、可变参数以及递归
何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 System.out.println();/ ...
- js调用java_Js调用Java方法并互相传参的简单实例
Js通过PhoneGap调用Java方法并互相传参的. 一.JAVA代码 写一个类,该类继承自Plugin并重写execute方法. public class PluginTest extends P ...
最新文章
- 手机触屏滑动图片切换插件swiper.js
- 安装、连接MS SQL Server 2000的问题
- 人工智能写散文之错位时空
- matlab 神经网络编程入门系列(1)
- NSURLSession
- Win7系统提示NVIDIA显示设置不可用怎么办
- 最新字节跳动面试题之堆排序
- ActivityManagerService启动过程
- 实现表格隔行变色研究
- pr中的字幕、关键帧动画以及声音的处理
- 计算机原理非门,反相器和非门有什么区别
- 四级词汇pdf_这或许是史上最全“雅思阅读高频词汇”,赶快拿走吧~~
- SendGrid -- Stressful Subject
- docker-Alpine添加字体支持功能
- php实现仿淘票票订票网站
- 倒金字塔java语言_金字塔和倒金字塔
- mysql里面对JSON的操作函数JSON_EXTRACT
- 2022年六款最好用的运动耳机、骨传导耳机推荐
- java 书 例子_刚学了java中的方法,看了书本的例子不会做,求大神做出来研究下...
- 如何在计算机磁盘建文件,如何在win7电脑中建立一个隐藏的磁盘分区?
热门文章
- php168优缺点,优缺点评测爱普生l4169和l4168区别哪个好?有什么区别呢?全方位深度解析实情...
- Linux查看磁盘扇区大小
- 半入耳式蓝牙耳机推荐,盘点2022高品质半入耳蓝牙耳机
- 1688API接口,获得1688商品分类
- 云服务平台分类——IAAS,PAAS,SAAS
- 【Bioinfo Blog 007】——Perl与Python的异同整理
- 【实现操作系统 03】使用 FAT12 文件系统实现简单的 Boot 加载 Loader 到内存
- c语言ppt转化为图片,ppt转长图软件下载 神奇PPT转长图软件 v2.0.0.225 中文安装版(附安装使用教程) 下载-脚本之家...
- 关于在vue当中,ios手机不显示图片,需要刷新解决问题
- 【号外】阿尔法巴,全球首个开放道路无人驾驶公交上路,中国的!