第10講 関数の再帰的呼び出し=関数の自己再帰の学習
第4話 関数の再帰的呼び出しによる汎用的順列作成プログラム
解答コード例
public class A{
public static int[] x=new int[20];
public static int n;
public static int cn;
public static void main(String args[]) throws IOException{
BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
System.out.println("1からnまでの順列をすべて発生させます。");
System.out.println("いくつまでの順列かキーボードから入力してください。");
System.out.print ("n=");
n=Integer.parseInt(a.readLine());
cn=0;
f(0);
System.out.print ("順列総数=");
System.out.print (cn);
}
public static void f(int g){
int i,j,h;
for(i=1;i<n+1;i++){
x[g]=i;
h=1;
if(g>0){
for(j=0;j<g;j++){
if(x[g]==x[j]){
h=0;
break;
}
}
}
if(h==1){
if(g+1<n){
f(g+1);
}
else{
cn++;
for(j=0;j<n;j++){
System.out.print(x[j]);
System.out.print (" ");
}
System.out.println();
}
}
}
}
}
実行例
頭が爆発しそうですよね。
大丈夫です。次話で皆さんが理解できるようにエスコートしますよ。
第3話へ 第5話へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第2部
初心者のための
VC++による C言語 入門 C++ 入門 基礎から応用まで第3部
初心者のための Java 入門 サイト 基礎から応用まで第1部
初心者のための Java 入門 サイト 基礎から応用まで第2部
初心者のための Java 入門 サイト 基礎から応用まで第3部