递归
使用递归首先要找出递归的出口
计算小数字阶乘
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);
}
}
}