美文网首页
基础 4.归纳法与递归

基础 4.归纳法与递归

作者: 胖达_4b7e | 来源:发表于2018-12-25 22:04 被阅读0次

    归纳法步骤:

    1.观察(猜)得到一个规律
    2.证明n=1成立
    3.证明kn成立的话,kn+1也成立

    猜到规律,证明就可以用了, 关键是要猜得到这个规律

    和递归的逻辑是一样的

    以棋盘放麦粒为例证明等比数列公式 在63前都是对的:

    class Result {
        public long wheatNum = 0;  // 当前格的麦粒数
        public long wheatTotalNum = 0;  // 目前为止麦粒的总数
    }
    
    public class Lesson4_2 {
    
        /**
         * @Description: 使用函数的递归(嵌套)调用,进行数学归纳法证明
         * @param k- 放到第几格,result- 保存当前格子的麦粒数和麦粒总数
         * @return boolean- 放到第 k 格时是否成立
         */
    
        public static boolean prove(int k, Result result) {
    
            // 证明 n = 1 时,命题是否成立
            if (k == 1) {
                if ((Math.pow(2, 1) - 1) == 1) {
                    result.wheatNum = 1;
                    result.wheatTotalNum = 1;
                    return true;
                } else {
                    return false;
                }
            }
            // 如果 n = (k-1) 时命题成立,证明 n = k 时命题是否成立
            else {
    
                boolean proveOfPreviousOne = prove(k - 1, result);
                result.wheatNum *= 2;
                result.wheatTotalNum += result.wheatNum;
                boolean proveOfCurrentOne = false;
                if (result.wheatTotalNum == (Math.pow(2, k) - 1)) {
                    proveOfCurrentOne = true;
                }
    
                return proveOfPreviousOne && proveOfCurrentOne;
    
            }
    
        }
    
        public static void main(String[] args) {
    
            int grid = 63;
    
            Result result = new Result();
            System.out.println(Lesson4_2.prove(grid, result));
    
        }
    }
    

    不同的是从大往小了推, 逆向递推
    可以看到, 其实递归中 实际计算也是从0开始 和循环一样

    相关文章

      网友评论

          本文标题:基础 4.归纳法与递归

          本文链接:https://www.haomeiwen.com/subject/qlmqlqtx.html