バイナリしゅつりょく

669 ワード

質問する


自然数Nのこの整数を再帰関数を用いて出力する.

私の答え

import java.util.*;
class Main2 {
	public void DFS(int n) {
		if(n==0) return;
		else {
			DFS(n/2);
			System.out.print(n%2);
		}
	}
	
	public static void main(String[] args) {
		Main2 T = new Main2();
		T.DFS(11);
	}

}

解答方法


自然数Nのこの整数は、Nを2で割って余剰を0に出力する値である.
ex)
11を2で割ったシェア=5、残り=1
5を2で割ったシェア=2、残り=1
2を2で割るシェア=1、残り=0
1を2で割ったシェア=0、残り=1.
11はバイナリで表され、1011である.
再帰関数はスタックフレームワークを使用し、

DFS(11)〜DFS(0)の順にスタックされる.
DFS(0)をDFS(11)に順にポップアップします.