• 締切済み

0から12までの値nを入力し、nと階乗n!の値を表示しなさいという問題

0から12までの値nを入力し、nと階乗n!の値を表示しなさいという問題です。 前にこのプログラムで複数個、同時には計算できない問題を自分で解決したのですがこんどは0が計算できないようです。 System.StackOverflowException' のハンドルされていない例外が WindowsApplication1.exe で発生しました。 とでます Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim n As Long Dim f As Long n = CLng(TextBox1.Text) TextBox2.Text = CStr(Recur(n)) End Sub Public Function Recur(ByVal arg As Long) As Long ←ここにエラーが If arg = 1 Then Recur = arg Exit Function End If Recur = arg * Recur(arg - 1) End Function End Class というプログラムです。分かる方よろしくお願いします。 実行エラーです。

みんなの回答

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

現状では 0が来ると無限再帰になりますね。 ---- If arg = 1 Then Recur = arg ---- のところを ---- If arg <= 1 Then Recur = 1 ---- に変更してはいかがでしょうか。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

「0! = 1 と約束されている」という事なので、1の時同様、argが0なら、1を戻しておしまいとしておくしかないのではないでしょうか。 Recur = arg * Recur(arg - 1) ← この部分が0に対しては適用できません(階乗の定義から外れる) Wikipedia等でお調べ下さい。

関連するQ&A