递归阶乘输出

时间:2015-05-14 02:01:45

标签: vb.net recursion factorial

我尝试通过vb控制台应用程序编写递归函数,该应用程序将输出阶乘或1到10之间的数字。运行时会出现System.StackOverflowException。谁能帮助解释我做错了什么?

    String s= "(123) 456-7890";
    String[] parts = s.split("[()\\- ]");
    System.out.println("(" + parts[1] + ") " + parts[3] + "-" + parts[4]);

2 个答案:

答案 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)的递归调用将继续被无休止地调用,在那里耗尽你的堆栈空间。打破递归的条件是在你的递归调用之后,因此控制永远不会超出对递归函数的调用之外的点,并一直反复调用它。