开发者社区> 问答> 正文

用JAVA程序写一个最简单的递归算法

本人初学JAVA~希望哪位大哥写清楚注释好吗?

展开
收起
知与谁同 2018-07-19 18:26:43 2238 0
1 条回答
写回答
取消 提交回答
  • 比如阶乘运算,就是一个很简单的递归

    类的代码如下:
    ----------------------------------------------------
    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
    2019-07-17 22:55:46
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载