プロが教えるわが家の防犯対策術!

再帰呼び出しで記載されている以下の内容を
普通の関数呼び出しに置き換える場合どのように記載すればよいのでしょうか。
宜しくお願いいたします。

Sub sample()
  MsgBox sample_sub(3)
End Sub
Function sample_sub(ByVal n As Integer)
  If n <= 1 Then
    sample_sub = 1 'ここで再帰処理は終了します。
  Else
    sample_sub = n * sample_subA(n - 1) 'ここで自分自身を呼び出しています。
  End If
End Function

A 回答 (1件)

階乗の計算ですね。

以下のようになります。
Sub sampleA()
MsgBox sample_subA(3)
End Sub

Function sample_subA(ByVal n As Integer)
Dim i As Long
Dim result As Long
result = 1
For i = n To 1 Step -1
result = result * i
Next
sample_subA = result
End Function
    • good
    • 0
この回答へのお礼

ありがとうございます。
階乗の計算です。
質問をだしてからすぐにご回答いただけるなんて驚きました。
数時間考えてできなかったところ助けていただき感謝いたします。
ありがととうございました。

お礼日時:2018/07/24 00:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!