递归,迭代,与分治

递归:

先从经典的斐波拉契数列开始:

public static void main(String[] args) {
        for(int i=1;i<10;i++){
            System.out.println(fibonacci(i));
        }
    }
    /**
     * 递归求斐波拉契数列
     * @param i 第i个斐波拉契数列
     * @return 第i个斐波拉契数列的值
     */
    public static int fibonacci(int i){
        if(i==1||i==2) return 1;
        else return fibonacci(i-1)+fibonacci(i-2);
    }

迭代:

public static void main(String[] args) {
        for (int i = 1; i < 10; i++) {
            System.out.println(fibonacci(i));
        }
    }

    /**
     * 递归求斐波拉契数列
     *
     * @param i 第i个斐波拉契数列
     * @return 第i个斐波拉契数列的值
     */
    public static int fibonacci(int i) {
        int temp1 = 1;//前一个值
        int temp2 = 1;//后一个值
        int result = 0;//结果值
        for (int m = 1; m <= i; m++) {
            if (m == 1 || m == 2) result = 1;
            else {
                result = temp1 + temp2;
                temp1 = temp2;
                temp2 = result;
            }
        }
        return result;
    }

以上是实现斐波拉契数列的两种方式,分别称作递归与迭代,由代码不难看出,递归和迭代的实现原理可以抽象描述如下:

发布了58 篇原创文章 · 获赞 75 · 访问量 6660

猜你喜欢

转载自blog.csdn.net/qq_42013035/article/details/103506427
今日推荐