本人初学JAVA~希望哪位大哥写清楚注释好吗?
參考答案:比如阶乘运算,就是一个很简单的递归
类的代码如下:
----------------------------------------------------
import java.math.BigInteger;
//由于结果比较大,引入了大整数BigInteger类
public class Plus {
//该类计算1000!并输出
public static void main(String[] args) {
int n = 1000;
System.out.println(getPlus(n).toString());
//调用getPlus方法,获取n!,并将结果转化为字符串输出
}
static BigInteger getPlus(int n) {
//该方法获取n的阶乘
if(n==0) return new BigInteger("1");
//如果n是0,那么返回0!=1……(*)
return getPlus(n - 1).multiply(new BigInteger(String.valueOf(n)));
//如果n非0,那么返回(n-1)!*n……(**)
}
}
---------------------------------------------------------
关键的步骤在于(*)和(**)
要运用递归,就必须满足
1.原问题可以层层转化为规模越来越小的子问题
即(**),把n!转化为求(n-1)!,再转为求(n-2)!……
2.对于规模足够小的问题,能够直接得解
即(*),对于0!,能够直接得到结果1