Java中计算不起作用的阶乘的递归方法

Java中计算不起作用的阶乘的递归方法,java,math,methods,recursion,factorial,Java,Math,Methods,Recursion,Factorial,用Java编写计算阶乘的递归方法。不幸的是,它不起作用,我怀疑这是因为我不太确定的两个参数——我用星号包围了这两个参数。这些是属于那里的正确参数吗?或者我需要把它们换成别的东西,为什么 public fact(n) { return this.factHelp(n, ***n+1*** ); } private factHelp(n, result) { if (n == 0) return result; else return this.factH

用Java编写计算阶乘的递归方法。不幸的是,它不起作用,我怀疑这是因为我不太确定的两个参数——我用星号包围了这两个参数。这些是属于那里的正确参数吗?或者我需要把它们换成别的东西,为什么

public fact(n)
{
   return this.factHelp(n, ***n+1*** );
}

private factHelp(n, result)
{
   if (n == 0)
      return result;
   else
      return this.factHelp(n – 1, ***result***);
}

这段代码无法编译

  • 这两种方法都缺少返回类型。您应该使用
    public int-fact…
    而不是
    public-fact…
  • 您的参数没有类型。它可能应该是
    fact(int n)
    而不是
    fact(n)
  • 这样做不需要两个函数。如果你愿意,你可以用两个,但我只是想让你知道这是不必要的
  • 您可能应该在谷歌上搜索“递归阶乘算法”以获得更多帮助

  • 你为什么不调试一下并找出答案呢?@user2777815 man确实发明了打印语句,想想你在做什么。您什么时候有变更结果?你只要把它传回去就行了。result/@Cruncher肯定会出什么事。我对编程相当陌生。不太确定如何使用print语句来调试..@Cruncher有点道理。我必须从结果中不断减去1吗?我从来没有听说过“TCO变量”这个短语,问这个问题的人可能也没有听说过。你能详细说明一下吗?这样可以更容易地设置初始调用条件(从外部代码)。我错了。这是这样写的(相对于添加到方法的返回)。但是,请看前面的评论-我认为这里使用两种方法更好,因为它隐藏了内部内容。@user2246674坦白地说,在真实的word场景中,我只会使用迭代。为什么要使用堆栈空间?@Cruncher因为“不预先优化”。