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;
        }
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM