JAvaの再帰操作(十進法でバイナリを例に)

3644 ワード

JAvaの再帰操作(十進法でバイナリを例に)
アルゴリズム4の中で10進数が2進数のコードを回転することを見て、感じは特に簡潔で、少し実現しました
JAvaには、このタスクを完了するためにInteger.toBinaryString(N)が内蔵されています.
再帰呼び出しとは、現在の関数で現在の関数を呼び出し、対応するパラメータに渡す動作であり、この動作は一般的な状況を満たすまで階層的に行われ、再帰呼び出しを停止し、最後の再帰呼び出しから戻り始めます.(360百科)呼び出し中
呼び出された関数から呼び出された関数を返す前に、システムは3つの作業を完了する必要があります.
(1)被変調関数の計算結果を保存する.
(2)変調関数のデータ領域を解放する.
(3)被変調関数が保存した戻りアドレスに従って呼び出し関数に制御を移行する.複数の関数がネストされた呼び出しを構成する場合、後呼び出しが先に戻るという原則に従う.
再帰関数の特徴
すべての再帰関数の構造は類似している.
(1)関数は直接または間接的に自身を呼び出す.
(2)再帰終了条件チェック,すなわち再帰終了条件が満たされると,自己関数は呼び出されなくなる.
(3)再帰終了の条件を満たさない場合、再帰呼び出しに関する式を呼び出す.関数自体を呼び出すと、終了条件に関するパラメータが変化し、再帰終了の方向に変化する.
まとめ
関数の呼び出し原則は、データ構造スタックの実装と一致します.関数呼び出しがスタックによって実装されることも示します.
package com.algorithms.section_1;
import java.util.Scanner;

/**
 * @author        
 * @data 2017 6 3    8:02:13
 */
public class RandomDoubleNumber {
    public static void main(String args[]){
        System.out.println("        :");
        Scanner in=new Scanner(System.in);
        int x=in.nextInt();
        if(x>0&&x!=0){
            String str=toBinaryString(x);
            System.out.println("          :"+str);
        }else{
            System.out.println("      ");
        }
    }
//      (   2)                       。 
    public static String toBinaryString(int N){
        String s="";
        for(int n=N;n>0;n/=2){
            s=(n%2)+s;
        }
        return s;   
    }
}

次は再帰的な実装です.
public class DecTransBinary{
    public static void main(String args[]){
        toBinary(123);
    }
    public static void toBinary(int n){
        if(n/2==0)
            System.out.println(n%2);
        else
            toBinary(n/2);
        System.out.println(n%2);
    }
}