回答編集履歴

2

質問文への回答の追加

2022/11/30 08:52

投稿

luuguas
luuguas

スコア492

test CHANGED
@@ -1,10 +1,10 @@
1
- ## 文法について
1
+ # 文法について
2
2
  if文の使い方がわかっていないようです。
3
3
  ```js
4
4
  if(条件A){
5
5
  条件Aに当てはまるときの処理
6
6
  }
7
- else{
7
+ else{ //else節は省略可
8
8
  条件Aに当てはまらないときの処理
9
9
  }
10
10
  ```
@@ -12,9 +12,10 @@
12
12
  - 条件分岐した後の各処理を`{}`で囲む
13
13
  - else節には条件文はつかない
14
14
 
15
+ ---
15
- また、return文についても理解できていないようです。
16
+ return文についても理解できていないようです。
16
17
 
17
- `return`は関数の処理を終了し、関数の呼び出し元に戻り値を返すときに使うものです。したがって、`return`の後ろに処理を付け足しても、その処理は実行されません。
18
+ `return`は関数の処理を終了する(&関数の呼び出し元に戻り値を返す)ときに使うものです。`return`の後ろに処理を付け足しても、その処理は実行されません。
18
19
  ```js
19
20
  function hoge(){
20
21
  console.log('hoge');
@@ -22,12 +23,14 @@
22
23
  console.log('foo'); //この処理は実行されない
23
24
  }
24
25
  ```
25
- 今回、関数途中で終了することない上戻り値も返さないので、`return`は必要ありません
26
+ よって、「diskが0以下のとき処理行わない」ようにするは、最初に`if(disk <= 0){return;}`を入れれば良いです
27
+
28
+ また、20020822さんのコードでは、条件分岐後の各処理の1行目に`return`を入れてしまっているので、続く処理が実行されません。ここの`return`は削除しましょう。
26
29
 
27
30
  詳しくは以下のサイトを参考にしてください。
28
31
  https://www.javadrive.jp/javascript/function/index4.html
29
32
 
30
- ## 関数について
33
+ # 関数について
31
34
  再帰関数を使った解き方はわかっているようなので、あとはif文の条件を考えましょう。
32
35
 
33
36
  ハノイの塔の解き方は次のようになります。
@@ -45,11 +48,16 @@
45
48
 
46
49
  参考サイト: https://manabitimes.jp/math/1311
47
50
 
48
- ## まとめ
51
+ # まとめ
49
52
  以上のことを踏まえてコードを書き直すとこうなります。
50
53
  ```js
51
54
  function hanoi(disk, tower1, tower2, tower3) {
55
+ if(disk <= 0){
56
+ //diskが0以下のときは処理を行わない
57
+ return;
58
+ }
59
+
52
- if(disk == 1){
60
+ if(disk == 1){
53
61
  console.log(`大きさ1の円盤を${tower1}から${tower2}に移動`);
54
62
  }
55
63
  else{

1

説明追加

2022/11/30 08:20

投稿

luuguas
luuguas

スコア492

test CHANGED
@@ -22,6 +22,7 @@
22
22
  console.log('foo'); //この処理は実行されない
23
23
  }
24
24
  ```
25
+ 今回は、関数を途中で終了することはない上、戻り値も返さないので、`return`は必要ありません。
25
26
 
26
27
  詳しくは以下のサイトを参考にしてください。
27
28
  https://www.javadrive.jp/javascript/function/index4.html