您的位置:首页 > 编程语言 > Java开发

Java - 递归

2013-04-09 11:30 211 查看

递归

使用递归首先要找出递归的出口

计算小数字阶乘

package com.itlwc;

public class JC {
public static void main(String[] args) {
System.out.println(compute1(5));
System.out.println(compute2(5));
}

/*
* 循环方式计算阶乘,计算方式:n!=n*(n-1)*(n-2)...2*1
*/
public static int compute1(int number) {
int result = 1;
for (int i = number; i > 0; i--) {
result *= i;
}
return result;
}

/*
* 递归方式计算阶乘,计算方式:n!=n*(n-1)!,(n-1)!=(n-1)*(n-2)!...
*/
public static int compute2(int number) {
if (number == 1) {
return 1;
} else {
return number * compute2(number - 1);
}
}
}

计算大数字阶乘

package com.itlwc;

import java.math.BigDecimal;

public class JC {
public static void main(String[] args) {
System.out.println(compute3(100));
System.out.println(compute4(new BigDecimal(100)));
}
/*
* 循环方式,计算大数字阶乘
*/
public static BigDecimal compute3(int number) {
BigDecimal bd = new BigDecimal(1);
for (int i = 1; i <= number; i++) {
bd = bd.multiply(new BigDecimal(i));
}
return bd;
}

/*
* 递归方式,计算大数字阶乘
*/
public static BigDecimal compute4(BigDecimal number) {
if (number.equals(BigDecimal.ONE)) {
return BigDecimal.ONE;
} else {
return number.multiply(compute4(number.subtract(BigDecimal.ONE)));
}
}
}

斐波那契数列 使用递归

package com.itlwc;

public class FbnqSl {
public static void main(String[] args) {
System.out.println(compute(9));
}

public static int compute(int number) {
if (1 == number || 2 == number) {
return 1;
} else {
return compute(number - 1) + compute(number - 2);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: