当前位置:首页 > 开发 > 编程语言 > Java > 正文

java 递归部分例子

发表于: 2015-03-12   作者:davidforit   来源:转载   浏览次数:
摘要: package com.lw.list; /*** * f(n)=n+f(n-1) * @author liwei * */ public class 递归Test { /*** * 方法一 * 递归方法DecimalToBinary,把一个十进制数转换成二进制数 * @param num */ public void Dec
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 递归部分例子

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
今天无聊写一下递归算法,好久没用也忘了,刚好记下来,下次直接look。 一、数字例子 下面是一个计
今天无聊写一下递归算法,好久没用也忘了,刚好记下来,下次直接look。 一、数字例子 下面是一个计
一、含义 递归算法是一种直接或间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问
1.首先我们得有一个树状结构的表,类似这种结构。必须得有 id,pid 其他的根据需要来。 我们叫它tre
Coding多了,递归算法是非常常见的,最近我一直在做树形结构的封装,所以更加的离不开递归算法。所
一 . 两个小经验 1.在定义一个类时,不要随意定义成员变量.除非它是这个类的一个属性或者在类的多个
package com.yang.recursion; import java.io.File; public class FileList { public static void m
一 . 两个小经验 1.在定义一个类时,不要随意定义成员变量.除非它是这个类的一个属性或者在类的多个
全排列,full permutation, 经常用于博彩行业。当然我也是一时心血来潮,突然想看看具体如何实现。
先引用<<Java 7 Concurrency Cookbook>>书中一段关于Fork Join的描述: This framework
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号