`

java 递归部分例子

阅读更多
package com.lw.list;


/***
 * f(n)=n+f(n-1)
 * @author liwei
 *
 */
public class 递归Test {


	/***
	 * 方法一
	 * 递归方法DecimalToBinary,把一个十进制数转换成二进制数
	 * @param num
	 */
	public void DecimalToBinary(int num) {
		if (num == 0) { // 当num=0时,循环结束
			return;
		} else {
			DecimalToBinary(num / 2); // 调用递归方法
			System.out.print(num % 2);
		}
	}
	
	/***
	 * 方法二
	 * 递归方法DecimalToBinary1,把一个十进制数转换成二进制数
	 * @param num
	 * @return
	 */
	public String DecimalToBinary1(int num) {
		if (num == 0) { // 当num=0时,循环结束
			return "";
		} else {
			return DecimalToBinary1(num / 2) + Integer.toString(num % 2); // 调用递归方法
		}
	}
	
	/***
	 * 阶乘
	 * 1*2*3*4....n
	 * @param num
	 * @return
	 */
	public int jiecheng(int num) {
		if(num==1) {
			return 1;
		} else {
			return num * jiecheng(num - 1);
		}
	}

	/***
	 * 叠加
	 * 1,2,3...100 依次相加的结果
	 * @param num
	 * @return
	 */
	public int sum(int num) {
		if (num > 0) {
			return num + sum(num - 1);
		} else {
			return 0;
		}
	}
	
	/***
	 * 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……
	 * 这个数列从第三项开始,每一项都等于前两项之和。
	 * @param n
	 * @return
	 */
	public int fib(int n) {
		if (n == 0)
			return 0;
		if (n == 1)
			return 1;
		if (n > 1)
			return fib(n - 1) + fib(n - 2);
		return 0;
	}

	/***
	 * 两个数字的最大公约数
	 * @param num1
	 * @param num2
	 */
	public void yueshu(int num1, int num2) {
		if (num1 == num2) {
			System.out.println(num1); // num1=num2时,结束
		} else {
			yueshu(abs(num1 - num2), min(num1, num2)); // 调用递归方法
		}
	}

	// 求两个数绝对值
	private int abs(int num) { return num > 0 ? num : -num; }

	// 求两个数较小者
	private int min(int num1, int num2) { return num1 > num2 ? num2 : num1; }
	

	public static void main(String[] args) {
		
		递归Test t = new 递归Test();
		
		// 1,2,3...100 依次相加的结果
		System.out.println(t.sum(100));
		// 1*2*3*4...*n
		System.out.println(t.jiecheng(5));
		
		// 两个数字的最大公约数
		t.yueshu(13, 8);
		
		System.out.println(t.fib(4));
		
		// 十进制数转换成二进制数
		t.DecimalToBinary(9);
		
		System.out.println();
		System.out.println(t.DecimalToBinary1(8));
		
	}
	
}

 

分享到:
评论

相关推荐

    java递归例子

    java递归小例子,供初学者学习使用。九九递归

    Java递归例子.doc

    Java 递归例子 Java 递归是指在 Java 编程语言中,使用递归函数来解决问题的方法。递归函数是指在函数体中调用自身的函数。Java 递归例子中提供了三个经典的递归例子:汉诺塔问题、斐波那契级数和最大公约数。 1. ...

    Java递归读取文件例子_动力节点Java学院整理

    Java递归读取文件例子 Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */

    Java递归算法(PPT+PDF+Word)

    文档"Java递归算法.docx"可能包含了关于如何在实际代码中应用递归的例子,例如经典的Fibonacci序列计算、阶乘计算或者二分查找等。这些例子有助于理解递归的工作原理和如何在Java中实现它们。 "Java递归算法.pdf...

    java递归

    Java递归是编程中的一个重要概念,它是指在函数或方法的定义中...通过这些例子,我们可以看到Java递归在解决特定问题时的灵活性和实用性。然而,使用递归时需谨慎,确保理解和处理好递归的所有方面,以避免潜在的问题。

    (java递归)删除文件

    在这个例子中,递归调用`findFiles`会在到达文件系统中的最底层文件或目录时停止。当函数不再找到任何匹配的文件或目录,递归过程自然结束。 ### 关键知识点六:代码优化与改进 尽管当前实现有效,但可以从几个...

    Java递归例子.docx

    在Java中,递归的实现简洁且直观,但同时也需要程序员对递归的原理有深刻理解,以便正确处理递归深度和效率问题。本文将通过三个递归示例—汉诺塔问题、斐波那契数列和最大公约数(GCD)计算—来探讨递归在Java编程...

    Java递归例子.pdf

    以上三个例子展示了递归在不同场景下的应用。递归可以使代码简洁、易于理解,但也可能导致效率问题,尤其是处理大数据量时。因此,在实际编程中,我们需要根据问题的特点选择合适的算法,并考虑优化,如使用记忆化...

    java递归实现 阶乘

    在这个实例中,我们将深入探讨如何使用Java递归实现阶乘计算,并以1到10的数字为例进行演示。 阶乘是一个数学概念,表示一个正整数n的所有小于等于n的正整数的乘积,通常表示为n!。例如,5的阶乘(5!)是5 × 4 × ...

    java递归实现树(Tree)

    一个简单的小例子递归实现list按照index排序的树

    Java递归算法jid

    在这个例子中,factorial()方法是递归的。当传入参数 n 等于 0 时,方法返回 1。否则,方法返回 n 与 factorial(n-1)的乘积。这样,递归地计算阶乘,直到 n 等于 0 为止。 Java 递归算法是一个强大的工具,可以用于...

    java编写的递归算法的经典事例

    递归函数通常包含两个主要部分: - **基本情况**(Base Case):当问题规模足够小以至于可以直接解决时的情况。在这个例子中,当 `start` 等于 `end` 时,即表示只剩下一个元素未被处理,此时直接打印该元素即可...

    java详细讲解递归

    ### Java中的递归详解 #### 一、递归的基本概念 在Java编程语言中,递归是一种非常重要的算法思想和技术手段。递归是指一个方法直接或间接地调用自身的过程。这种自我调用的方式可以用来解决很多复杂的问题,并且...

    JAVA递归DEMO

    这个"JAVA递归DEMO"可能是一个示例,演示了如何使用递归来遍历XML文档的所有元素。XML(可扩展标记语言)是用于存储和传输数据的标准化格式,而递归遍历则能有效地处理其层次结构。 首先,让我们了解递归的基本概念...

    java 中的经典递归

    本篇介绍的全排列问题是递归应用的一个典型例子,通过这个例子我们可以看到递归如何有效地简化代码,同时也应注意递归可能带来的性能问题。在未来的学习和工作中,合理地使用递归将能帮助我们更好地解决问题。

    JAVA编程(递归典型题目)

    ### JAVA编程:递归典型题目解析 ...以上四个例子涵盖了递归在不同问题中的应用,从简单的数学运算到复杂的问题求解,递归都展现出了其独特的魅力。理解并掌握递归,对于提升编程技能和解决实际问题具有重要意义。

    java 递归 画树

    在Java编程中,递归是一种强大的技术,常用于解决复杂问题,例如数据结构的遍历、树形结构的绘制等。本示例中,我们利用Java递归来简单地画出一棵树,这是一个典型的图形用户界面(GUI)应用,通过NetBeans IDE实现...

    【Java】求1-100范围内的素数递归方法

    【Java】求1-100范围内的素数递归方法代码例子。分享,感谢。

    Java递归算法简单示例两则

    Java递归算法简单示例两则 Java递归算法是一种常用的算法设计方法,通过将问题分解为小问题,逐步解决,小问题的解决方法和大问题的解决方法相同,这样可以将复杂的问题简化为简单的问题。Java递归算法广泛应用于...

    JAVA程序递归方式搜索Windows文件夹源代码

    在Java编程中,递归是一种强大的技术,常用于解决复杂问题,例如遍历或搜索文件系统中的文件夹。本文将详细解析如何使用Java编写一个递归程序来搜索Windows文件夹,以及涉及到的相关知识点。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics