fork download
  1. #include <stdio.h>
  2. void moveOneDisk(int from, int to) {
  3. printf("杭%dから杭%dに移動\n", from, to);
  4. }
  5. void moveDisks(int from, int to , int n) {
  6. int anotherPole = 6-(from+to);
  7. if(n>1)
  8. moveDisks(from,to,n-1);
  9.  
  10. moveOneDisk(from,anotherPole);
  11. moveOneDisk(from,to);
  12. moveOneDisk(anotherPole,to);
  13. moveOneDisk(from,anotherPole);
  14. moveOneDisk(to,anotherPole);
  15. moveOneDisk(to,from);
  16. moveOneDisk(anotherPole,from);
  17. moveOneDisk(anotherPole,to);
  18.  
  19.  
  20.  
  21.  
  22.  
  23. }
  24.  
  25.  
  26.  
  27. int main(void) {
  28. int n = 5;
  29. printf("%d枚の円盤を杭1から杭3に移動させる手順は以下のとおり:\n",n);moveDisks(1, 3, n);
  30. return 0;
  31. }
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
5枚の円盤を杭1から杭3に移動させる手順は以下のとおり:
杭1から杭2に移動
杭1から杭3に移動
杭2から杭3に移動
杭1から杭2に移動
杭3から杭2に移動
杭3から杭1に移動
杭2から杭1に移動
杭2から杭3に移動
杭1から杭2に移動
杭1から杭3に移動
杭2から杭3に移動
杭1から杭2に移動
杭3から杭2に移動
杭3から杭1に移動
杭2から杭1に移動
杭2から杭3に移動
杭1から杭2に移動
杭1から杭3に移動
杭2から杭3に移動
杭1から杭2に移動
杭3から杭2に移動
杭3から杭1に移動
杭2から杭1に移動
杭2から杭3に移動
杭1から杭2に移動
杭1から杭3に移動
杭2から杭3に移動
杭1から杭2に移動
杭3から杭2に移動
杭3から杭1に移動
杭2から杭1に移動
杭2から杭3に移動
杭1から杭2に移動
杭1から杭3に移動
杭2から杭3に移動
杭1から杭2に移動
杭3から杭2に移動
杭3から杭1に移動
杭2から杭1に移動
杭2から杭3に移動