突然ですいません、独学で勉強してるんですが、本に余り詳しく載ってなかったので 質問させてもらいます。 #include<stdio.h> //再帰関数の使い方 #include<stdlib.h> void hanoi(int n,int a,int b,int c); int main(void){ hanoi(3,'a','b','c'); return(EXIT_SUCCESS); } void hanoi(int n,int a,int b,int c){//一番小さい1~nまでのn枚:開始棒:目的棒:作業棒 if(n==1){//一番小さい円盤しかないのなら printf("1の円盤を %c から %c に移す\n",a,b); }else{ hanoi(n-1,a,c,b); printf("%dの円盤を %c から %c に移す\n",n,a,b); hanoi(n-1,c,b,a); } } 以上の途中にあるハノイ移動の 最初の引数の解釈“//一番小さい1~nまでのn枚”で合ってるでしょうか?
ハノイの搭のプログラムの解釈について
ハノイの搭のプログラムの解釈について
Re:ハノイの搭のプログラムの解釈について
> 最初の引数の解釈“//一番小さい1~nまでのn枚”で合ってるでしょうか? 正しいです。 なお、再帰の本体部分である > hanoi(n-1,a,c,b); > printf("%dの円盤を %c から %c に移す\n",n,a,b); > hanoi(n-1,c,b,a); は、こんな風に解釈するとわかりやすいかもしれません。 ・aにある上からn-1枚を、cへ移す。bを作業用に使う。 ・aに残っているいちばん大きい円盤を、bへ移す。 ・cに移しておいたn-1枚を、bへ移す。aを作業用に使う。 ・完成
Re:ハノイの搭のプログラムの解釈について
諸事情により,大変失礼ですが,中傷が来そうで怖いので,名前変えてるんですが、
とても分かりやすい説明ありがとうございます。
これで納得して、次に進めそうです。
毎回ありがとうございます。
独学の身としては感謝しきれないほど、感謝(重宝)してます。
とても分かりやすい説明ありがとうございます。
これで納得して、次に進めそうです。
毎回ありがとうございます。
独学の身としては感謝しきれないほど、感謝(重宝)してます。