java算法面试题:递归算法题1

递归算法题1

一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。
例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,

提示:写程序时,先致谢按递增方式的代码,写好递增的以后,再增加考虑递减部分。

package com.swift;

public class Digui_Dizeng_Dijian {

    public static void main(String[] args) {
        /*
         * 一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。 例:n=1237 则输出为:
         * 1237, 2474, 4948, 9896, 9896, 4948, 2474, 1237,
         */
        int n = 1237;
        dizeng(n);
        System.out.println(sum(100));
    }
    //无返回值递归
    public static void dizeng(int n) {
        System.out.println(n);
        if(n>9000) {
            dijian(n);
        }
        if (n < 5000) {
            dizeng(n * 2);
        }
    }

    public static void dijian(int n) {
        System.out.println(n);
        if(n==1237) {
            System.exit(0);
        }else {
            dijian(n/2);
        }
    }
    //有返回值递归
    public static int sum(int num) {
        if (num > 1) {
            return num + sum(num - 1);
        } else {
            return 1;
        }
    }

}

 

posted @ 2018-01-26 16:46  Advancing-Swift  阅读(2892)  评论(2编辑  收藏  举报