zoukankan      html  css  js  c++  java
  • 递归

    递归方法的特征:

    1、调用自身;

    2、当它调用自身的时候时为了解决更小的问题;

    3、存在某个足够简单的问题的层次,这一层算法不需要调用自身就可以自己解答,且返回结果。

    此外,递归的效率低,人们使用递归是因为它能简化问题,而不是有更高的效率。

    /**
     * 阶乘
     *
     * @param a
     * @return
     */
    public int jiecheng(int a) {
        if (a == 1) {
            return a;
        }
        return a * jiecheng(a - 1);
    }
    
    /**
     * 长方形(a,b),将长方形均匀的分成方块,且分出的方块尽可能大
     *
     * @param a
     * @param b
     * @return
     */
    public int getSquare(int a, int b) {
        if (a == b) {
            return a;
        }
        if (a > b) {
            a = a - b;
        } else {
            b = b - a;
        }
        return getSquare(a, b);
    }
    
    /**
     * 数组求和
     *
     * @param a
     * @return
     */
    public int sumOfArrary(int[] a, int index) {
        if (a.length == index + 1) {
            return a[index];
        }
        return a[index] + sumOfArrary(a, index + 1);
    }
    
    /**
     * 求数组中最大的数
     *
     * @param a
     * @param index
     * @param max
     * @return
     */
    public int maxOfAarray(int a[], int index, int max) {
        if (index + 1 == a.length) {
            if (a[index] > max) {
                return a[index];
            }
            return max;
        }
        if (a[index] > max) {
            max = a[index];
        }
        return maxOfAarray(a, index + 1, max);
    }
    
    /**三角数字递归
     * @param n
     * @return
     */
    public int triangle(int n) {
        if (n == 1) {
            return 1;
        } else {
            return n + triangle(n-1);
        }
    }
    /**
     *利用递归实现二分法查找
     * @param p 起始索引
     * @param r 结束索引
     * @return
     */
    public int selfQueryByRecursion(int p,int r){
        int[] orderedArray = {1, 1, 2, 3, 3, 4,5, 7, 9, 9};
        int q=(p+r)/2;
        if(p<r){
            if(orderedArray[q]==5){
                return q;
            }else if(orderedArray[q]>5){
                return selfQueryByRecursion(p,q-1);
            }else {
                return selfQueryByRecursion(q+1,r);
            }
        }
        return -1;
    }
  • 相关阅读:
    27. Remove Element
    26. Remove Duplicates from Sorted Array
    643. Maximum Average Subarray I
    674. Longest Continuous Increasing Subsequence
    1. Two Sum
    217. Contains Duplicate
    448. Find All Numbers Disappeared in an Array
    566. Reshape the Matrix
    628. Maximum Product of Three Numbers
    UVa 1349 Optimal Bus Route Design (最佳完美匹配)
  • 原文地址:https://www.cnblogs.com/BonnieWss/p/10874134.html
Copyright © 2011-2022 走看看