我尝试通过vb控制台应用程序编写递归函数,该应用程序将输出阶乘或1到10之间的数字。运行时会出现System.StackOverflowException。谁能帮助解释我做错了什么?
String s= "(123) 456-7890";
String[] parts = s.split("[()\\- ]");
System.out.println("(" + parts[1] + ") " + parts[3] + "-" + parts[4]);
答案 0 :(得分:1)
一个因子计划不应该这么久。您所需要的只是:
Module Module1
Dim Number As Integer
Sub Main()
Do
Console.WriteLine("Write a number from 1-10")
Number = Console.ReadLine()
Loop Until Number >= 1 And Number <= 10
Dim Result = FactorialCalc()
Console.WriteLine(Result)
Console.ReadLine()
End Sub
Function FactorialCalc(num as Integer) As Integer
Return num * If(num > 2, FactorialCalc(num - 1), 2)
End Function
End Module
答案 1 :(得分:0)
你对FactorialCalc(Number - 1)的递归调用将继续被无休止地调用,在那里耗尽你的堆栈空间。打破递归的条件是在你的递归调用之后,因此控制永远不会超出对递归函数的调用之外的点,并一直反复调用它。